React native 0.62.0 - ошибка сетевого запроса на Android для загрузки файла - PullRequest
2 голосов
/ 29 марта 2020

Я обновил реактивный род до 0,62 и у меня проблема с сетевыми ошибками только для Android, iOS работает нормально.

Я использую объект FormData для заполнения данных, отформатированных как

const data = new FormData(); 
// On Android i add file protocol to file path - file://... 
data.append('photos', { 
   uri: 'file:///data/.../my-image.jpeg', 
   type: 'image/jpeg',
   name: 'my-image.jpeg' 
});

и другие текстовые данные

data.append('description', 'my long description...');

У кого-нибудь есть проблема?

Я перепробовал несколько Android SDK 27, 28, 29 и получил ту же проблему на всех : (

Дело в том, что если я не загружаю изображения, а только запрос текстовых данных работает просто отлично: (

Любое предложение приветствуется:)?

Ответы [ 3 ]

2 голосов
/ 18 апреля 2020

Это происходит из-за сетевого плагина Flipper. Строка комментария № 43 в файле android/app/src/debug/java/com/<yourappname>/ReactNativeFlipper.java

38      NetworkFlipperPlugin networkFlipperPlugin = new NetworkFlipperPlugin();
39      NetworkingModule.setCustomClientBuilder(
40          new NetworkingModule.CustomClientBuilder() {
41            @Override
42            public void apply(OkHttpClient.Builder builder) {
43      //        builder.addNetworkInterceptor(new FlipperOkhttpInterceptor(networkFlipperPlugin));
44            }
45          });
46      client.addPlugin(networkFlipperPlugin);
1 голос
/ 01 мая 2020

В Flipper версии 0.39.0 и выше эта проблема была исправлена. Я только что обновил Flipper до версии 0.40.0, и он работает нормально.

https://github.com/facebook/flipper/issues/993#issuecomment -619823916

0 голосов
/ 03 апреля 2020

Публикация этого будет c Я сделал так, чтобы он работал с помощью response-native-ssl-pinning и Reaction-native-image-pick-picker

FormData

file: {
    uri: image.path,
    type: image.mime,
    name: 'image.jpg',
    fileName: 'image.jpg',
    size: image.size,
  },

и выборки

fetch(url, {
  method: 'POST',
  sslPinning: { certs: ['cert'] },
  body: {
    formData: formData,
  },
  headers: {
    Authorization:
      'Bearer Token',
    Accept: 'application/json; charset=utf-8',
    'Content-type': 'multipart/form-data; charset=UTF-8',
  },
})
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...