提问者:小点点

axios.post返回400 React Native的错误请求


我从一个API得到了我的令牌,但不幸的是,我的API返回了400个错误的请求。我已经通过邮递员检查了我的应用程序接口,它在那里工作得很好。请告诉我解决方案或任何错误。

async componentWillMount(){
 axios.post('http://api.myapiurl.com/token', {
                grant_type: 'PASSWORD',
                username: 'MY_USERNAME',
                password: 'MY_PASSWORD'
            }, {
                headers: {
                    'Content-Type': 'application/x-www-form-urlencoded; charset=UTF-8'
                }
            }).then(response => {
                console.log(response.data)
            }).catch(err => console.log("api Erorr: ", err.message))
}

以下响应错误

请求失败,状态代码为400-node_modules\axios\lib\core\createError. js:16:24在createError-node_modules\axios\lib\core\settle.js:18:6在结算-…框架内部还有10个堆栈帧


共3个答案

匿名用户

它是使用QueryString. stringify()解决的。我只是将正文传递给QueryString.stringify(),如下所示:

axios.post('http://api.apiurl.com/token', QueryString.stringify({
            grant_type: 'MY_GRANT_TYPE',
            username: 'MY_USERNAME',
            password: 'MY_PASSWORD'
        }), {
            headers: {
                "Content-Type": "application/x-www-form-urlencoded",
            }
        }).then(response => {
            console.log(response.data)
        }).catch(err => console.log("api Erorr: ", err.response))

匿名用户

据我所知,您正在发送json数据,但您的Content-Type标头设置为application/x-www-form-urlencoded; charset=UTF-8

匿名用户

尝试使用fetch代替,可能是一些axiosbug,你不需要添加任何库,这里是一个例子:

fetch("http://api.myapiurl.com/token", {
  method: "POST", // *GET, POST, PUT, DELETE, etc.
  headers: {
    "Content-Type": "application/json"
  },
  body: JSON.stringify({
    grant_type: "PASSWORD",
    username: "MY_USERNAME",
    password: "MY_PASSWORD"
  }) 
})
  .then(res => {
    res.json();
  })
  .then(data => console.log(data))  // ur data is here
  .catch(err => console.log("api Erorr: ", err));