如何使用formData在ReactNative中执行发布请求

时间:2017-09-18 09:02:10

标签: react-native fetch

我需要用fetch做一个post请求 像这样 in Postman

我尝试过的事情:

 let formData = new FormData();
      formData.append('username', String(username));
      formData.append('password', String(password));
  let init = {
    method: 'POST',
    header:{
      'Content-Type': 'application/x-www-form-urlencoded'
    },
   body: formData
}
  fetch(url, init)

它在Postman中取得了成功,但是在没有param的情况下返回400错误的fetch失败了。希望有所帮助,谢谢

所以我改变了我的代码

 var details = {
          'username': '123',
          'password': '123',
      };
      var formBody = [];
      for (var property in details) {
      var encodedKey = encodeURIComponent(property);
      var encodedValue = encodeURIComponent(details[property]);
      formBody.push(encodedKey + "=" + encodedValue);
     }
      formBody = formBody.join("&");

      let init = {
        method: 'POST',
        header:{
          'Accept': 'application/json',
          'Content-Type': 'application/x-www-form-urlencoded'
        },
       body: formBody
    }
      fetch(url, init)

但得到同样的错误

控制formBody:

username=123&password=123

我的标题密钥错误,这是错误

应该是:

let init = {
            method: 'POST',
            headers:{
              'Accept': 'application/json',
              'Content-Type': 'application/x-www-form-urlencoded'
            },
           body: formBody
        }

而不是

let init = {
                method: 'POST',
                header:{
                  'Accept': 'application/json',
                  'Content-Type': 'application/x-www-form-urlencoded'
                },
               body: formBody
            }

1 个答案:

答案 0 :(得分:0)

状态代码400表示您发送了错误请求,即服务器需要其他内容。

在这种情况下,您发送原始x-www-form-urlencoded(邮递员中的第一个选项),而您说您在标题中发送x-www-form-urlencoded

由于您希望根据Postman屏幕截图使用后者,因此您必须以{{1}}格式发送您的正文。