Невозможно сделать запрос POST для axios (React-Native) - PullRequest
0 голосов
/ 28 мая 2018

Я делаю POST-запрос к «облачному» серверу для загрузки изображения и отправки форм-данных с помощью 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 дня.PS: тот же код отлично работает на iOS.

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Я также боролся за эту проблему в течение некоторого времени.Но я разобрался с проблемой моей почтовой сети createError на устройстве Android.Причина, по которой Axios Network Error заключается в том, что данные формы, которые я передал в Axios, содержат неправильный тип объекта данных, я полагаю.Я включил объект изображения (объект ImagePicker из Expo) в качестве одного из параметров данных формы, которые, как мне кажется, не принимаются аксиосами.Axios может получить только строку, число с плавающей запятой, int или изображение в качестве параметра.изображение не может передаваться как параметр, это не тип изображения, это собственный объект реакции, я удалил его и включил поле изображения в качестве параметра, назначив image.uri значению параметра, после чего он работает.Надеюсь, что это поможет некоторым людям, которые могут столкнуться с той же проблемой, с которой я сталкивался раньше.Удаляя некоторые данные формы по одному при тестировании сетевой ошибки axios, вы узнаете, какая из них является причиной проблемы.

0 голосов
/ 28 мая 2018

прежде всего, чтобы получить правильное сообщение об ошибке.консоль error.response и в заголовках добавить

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

...