如何使用 formData 在 React Native 中执行 post 请求

How to do a post request in ReactNative with formData

我需要用 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 中成功,但未能获取 return 没有参数的 400 错误。希望有所帮助,谢谢

所以我更改了我的代码

 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

我的 headers 键是错误的,那是错误

应该是:

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
            }

状态代码 400 表示您发送了一个错误的请求,即服务器期望其他内容。

在这种情况下,您发送原始 multipart/form-data(Postman 中的第一个选项),而您说您在 headers.

中发送 x-www-form-urlencoded

根据您的 Postman 屏幕截图,您需要使用后者,因此您必须以 x-www-form-urlencoded 格式发送您的 body。