【问题标题】:Unable to make POST request on axios (React-Native)无法在 axios 上发出 POST 请求(React-Native)
【发布时间】:2018-05-28 14:48:25
【问题描述】:

我正在向“Cloudinary”服务器发出 POST 请求,以在 react-native 中使用 axios 上传图像并发送表单数据。整个过程在 iOS 上运行良好,但在 android 上出现“网络错误”。

我正在使用 axios 0.18.0 并且从过去 3 天开始一​​直坚持使用此版本。有人请帮帮我。

这个问题很多人都遇到过,但目前还没有解决办法。

 var photo = {
  uri: image.sourceURL,
  type: image.mime,
  name: image.filename,
 };

 var formData = new FormData();
 formData.append('file',photo); 
 formData.append('upload_preset','abcde');

 axios({
   url:'https://api.cloudinary.com/v1_1/abcde/upload',
   method:'POST',
   headers:{
    'Content-Type':'application/x-www-form-urlencoded'
   },
   data:formData
 }).then(function(response){

 }).catch((error) =>{
  //Network error comes in
 });

确切的控制台错误是:

Error: Network Error
at createError (createError.js:16)
at XMLHttpRequest.handleError (xhr.js:87)
at XMLHttpRequest.dispatchEvent (event-target.js:172)
at XMLHttpRequest.setReadyState (XMLHttpRequest.js:567)
at XMLHttpRequest.__didCompleteResponse (XMLHttpRequest.js:397)
at XMLHttpRequest.js:503
at RCTDeviceEventEmitter.emit (EventEmitter.js:179)
at MessageQueue.__callFunction (MessageQueue.js:351)
at MessageQueue.js:116
at MessageQueue.__guardSafe (MessageQueue.js:314)

有人能指出我正确的方向吗,因为我从过去 3 天就被困在这里了。 P.S:相同的代码在 iOS 上运行良好。

【问题讨论】:

  • 有同样的问题,经过一段时间后能够发现的是,在发布表单数据时,由于某种原因,在本机反应中,正文保持为空,请参阅 Axios 中打开的错误 - link。如果正文为空,Axios 将在幕后删除 Content-Type 标头

标签: android react-native networking axios


【解决方案1】:

我也在这个问题上为退出而苦苦挣扎。但我现在在 Android 设备上发现了我的 axios post network createError 的问题。 axios 网络错误的原因是因为我传递给 axios 的表单数据包含我猜的错误类型的数据对象。我已经包含了一个图像对象(来自 Expo 的 ImagePicker 对象)作为我认为 axios 不接受的表单数据的参数之一。 Axios 可能只接收 string、float、int 或 image 作为参数。图像不能作为参数传递,它不是一种图像,它是一个反应原生对象,我已经删除它并通过将 image.uri 分配给参数的值来包含一个图像字段作为参数,然后它就可以工作了。希望这会帮助一些可能遇到与我之前遇到的相同问题的人。 在测试 axios 网络错误的时候,把你的一些表单数据一一删除,你会发现问题的原因是哪一个。

【讨论】:

    【解决方案2】:

    首先要得到正确的错误信息。控制台 error.response 并在标题中添加

    Accept: "application/json", content-type: "multipart/form-data",

    【讨论】:

      【解决方案3】:

      尝试将type: 'image/jpeg' 添加到您的 FormData

      const formData = new FormData();
          formData.append('file', {
            uri: imageURL,
            type: 'image/jpeg',
            name: 'image-name'
      })
      

      【讨论】:

        猜你喜欢
        • 2020-09-17
        • 2019-04-24
        • 2020-11-07
        • 1970-01-01
        • 1970-01-01
        • 2019-11-03
        • 2018-08-31
        • 1970-01-01
        • 2020-10-18
        相关资源
        最近更新 更多