我正在一个项目中,我需要在请求的主体中而不是作为参数发送身份验证变量。我看到POST请求发送了第二个参数作为文档中的正文,但是.NET服务出现错误。
_response: "{"error":"invalid_clientId","error_description":"ClientId should be sent."}"
当我没有在体内发送参数时,我在PHP中遇到了相同的错误,但是这些值与我在此POST请求中使用的值完全相同,所以我知道这些参数和值是正确的。
这是我所拥有的:
axios.post(`https://myawesomeapi.com`,
{username:this.state.email_address, password:this.state.password, grant_type:'password', client_id:'thisAppsClientID'},
{headers: { 'content-type':'application/x-www-form-urlencoded', 'accept':'application/json' }}
).then( res => {
let result = res.data;
console.log(result);
})
.catch( (e) => { console.log(e.response); });
当我console.log并检查错误响应时,我看到以下内容:
config:
adapter: ƒ xhrAdapter(config)
data: "{"username":"myusername","password":"mypassword!","grant_type":"password","client_id":"thisAppsClientID"}"
headers: {Accept: "application/json, text/plain, */*", Content-Type: "application/x-www-form-urlencoded"}
...
如果有帮助,这就是我正在努力的东西:
$this->client->request('post', 'https://myawesomeapi.com',
['form_params' => ['username' => $input['username'], 'password' => $input['password'], 'client_id'=>'thisAppsClientID', 'grant_type'=>'password']],
['headers' => ['accept' => 'application/json','Content-Type' => 'application/x-www-form-urlencoded']]);
用户名,密码,grant_type和client_id是否作为正文传递?我搞砸了如何发送标题吗?谢谢,让我知道!
答案 0 :(得分:1)
我知道axios有类似的问题,但我从来没有想过。但是,我能够获得与Form Data一起使用的发帖请求。试试下面的代码片段。我希望它能起作用。
const dataForm = new FormData();
dataForm.append('username', this.state.email_address);
dataForm.append('password', this.state.password);
dataForm.append('grant_type', 'password');
dataForm.append('client_id', 'thisAppsClientID');
axios.post('https://myawesomeapi.com', dataForm)
.then(res => {
let result = res.data;
console.log(result);
})
.catch(e => {
console.log(e.response);
});