使用aurelia-fetch-client发布"x-www-form-urlencoded"内容 [英] Post 'x-www-form-urlencoded' content with aurelia-fetch-client

查看:84
本文介绍了使用aurelia-fetch-client发布"x-www-form-urlencoded"内容的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问题很简单:如何使用Aurelia Fetch客户端发布x-www-form-urlencoded内容?

The question is simple: how do I post x-www-form-urlencoded content with Aurelia Fetch client?

我需要将帖子发布到使用OWIN和Katana进行身份验证的简单ASP.NET Web API服务器上.

I need to make the post to a simple ASP.NET Web API server that is using OWIN and Katana for authentication.

我已经尝试过的例子:

var loginDTO = new FormData();
loginDTO.append('grant_type', 'password');
loginDTO.append('email', 'test');
loginDTO.append('password', 'test');

return this.http
    .fetch(config.router.token, {
        method: 'POST',
        headers: {
            'Content-Type': 'application/x-www-form-urlencoded'
        },
        body: loginDTO
    });

很显然,这没有按预期进行.如何发布示例中显示的数据的正确方法?

Obviously, that didn't work as intended. How is the correct way to go about posting the data presented in the example?

推荐答案

aurelia-fetch-client是基于Fetch规范构建的,似乎Fetch始终将FormData作为Content-Type: multipart/form-data发送.

The aurelia-fetch-client is built on Fetch specification, and it seems that Fetch always sends FormData as Content-Type: multipart/form-data.

要解决此问题,必须将参数转换为查询字符串,然后将内容类型设置为x-www-form-urlenconed.您可以使用jQuery或自定义函数将对象转换为查询字符串.像这样:

To get around this, you have to convert the parameters to a query string and then set the content-type to x-www-form-urlenconed. You can use jQuery or a custom function to convert the object to a query string. Like this:

//jQuery.param returns something like ?param=1&param2=2 and so on
//params = a plain javascript object that contains the parameters to be sent
this.http.fetch(url, {
  body: $.param(params),
  method: 'post',
  headers: {
    'Content-Type': 'application/x-www-form-urlencoded'
  }
})
.then(response => response.json())
.then(response => { 
   //your magic here
});

我知道这不是一个好的解决方案,但这是我到目前为止发现的最简单的方法.

Not a good solution, I know, but that's the easiest way I found so far.

这篇关于使用aurelia-fetch-client发布"x-www-form-urlencoded"内容的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
相关文章
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆