无法在axios上发出POST请求(React-Native)

时间:2018-05-28 14:48:25

标签: android react-native networking axios

我正在向" Cloudinary"发出POST请求服务器上传图像并使用axios在react-native中发送formdata。整个过程在iOS上工作正常但在Android上我得到了#34;网络错误"。

我正在使用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上运行良好。

2 个答案:

答案 0 :(得分:0)

first of all to get correct error message. console error.response and in headers add

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

答案 1 :(得分:0)

我也在这个问题上苦苦挣扎。但是我现在发现了Android设备上axios发布网络createError的问题。出现axios网络错误的原因是因为我传递给axios的表单数据包含错误类型的数据对象。我已经包含了一个图像对象(Expo的ImagePicker对象)作为表单数据的参数之一,我认为它不能被axios接受。 Axios可能只接收字符串,浮点数,整数或图像作为参数。 image不能作为参数传递,它不是图像类型,它是一个响应本机对象,我已删除它,并通过将image.uri分配给param的值来包含一个图像字段作为param,然后它可以工作。希望这对某些可能遇到我以前遇到过的问题的人有所帮助。   测试axios网络错误时,一一删除一些表单数据,您将找出引起问题的原因之一。