我不确定这里的实际问题是什么,可能是API,在react原生上的fetch实现,或者我的格式化。
我尝试了许多不同的格式,甚至将请求硬编码到我的应用程序中,但我请求的服务器应用程序接口仍然返回Error 400: Bad Request和一个名为unsupported_grant_type的JSON文件。下面是我发送的代码片段:
var options = {
"method": "POST",
"headers": {
"Content-Type": "application/x-www-form-urlencoded",
"Authorization": "Basic TWVtYmVyQ2VudGVyTGFuZGluZzp0ZXN0cGFzcw==",
},
"data": {
"grant_type": "password",
"username": "MemberCenterLanding",
"password": "testpass"
}
}然后,我根据API文档使用带有staging url http://10.64.2.149:8081/oauth/token的fetch(url, options).then(response => { return response.json()...发送了这段代码。
我用postman尝试了这个请求,它起作用了,只是不是在我的程序中:(我也试着用JSON.stringify()和FormData改变正文的格式,但都不起作用。
ADD:我还尝试使用node-fetch创建要在node.js上运行的小型请求文件,但仍然无法工作,并产生了相同的结果。有趣的是,node-request运行得很好。
有谁能帮我缩小问题的范围吗?react native的fetch()实现有没有做过任何修改,也许这与API的实现方式有关?
提前感谢!
发布于 2018-04-20 17:25:08
使用body而不是data。并使用JSON.stringify将JSON值转换为JavaScript字符串。
var options = {
"method": "POST",
"headers": {
"Content-Type": "application/x-www-form-urlencoded",
"Authorization": "Basic TWVtYmVyQ2VudGVyTGFuZGluZzp0ZXN0cGFzcw==",
},
"body": JSON.stringify ({
"grant_type": "password",
"username": "MemberCenterLanding",
"password": "testpass"
}),
}https://stackoverflow.com/questions/49938236
复制相似问题