我不确定这里的实际问题是什么,可能是API,反应原生的fetch实现,还是我的格式化。
我尝试了很多不同的格式,甚至将请求硬编码到我的应用中,但我请求的服务器API仍然返回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文档的暂存网址fetch(url, options).then(response => { return response.json()...
使用http://10.64.2.149:8081/oauth/token
发送了此内容。
我和邮递员一起尝试了这个请求但它有效,只是不是来自我的程序:(
我尝试使用JSON.stringify()
和FormData
更改正文的格式,但没有任何效果。
ADD:我还尝试使用node-fetch
创建要在node.js上运行的迷你请求文件,但仍然无法正常工作并产生相同的结果。有趣的是,node-request
运行正常。
任何人都可以帮助我缩小这里的问题吗? 是否通过fetch()实现了本机的反应,是否与API的实现方式有关?
提前致谢!
答案 0 :(得分:0)
使用body
代替数据。并使用JSON.stringify
将JavaScript值转换为JSON字符串。
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"
}),
}