2016-07-03 3 views
0

Попробовал создать учетную запись пользователя через https-запрос POST под управлением response-native с помощью axios, в то время как он всегда терпел неудачу на Android с «сетевой ошибкой».React-native POST-запрос в android over https return network error

axios('https://'+DEST_URI, { 
method: 'post', 
data: account, 
headers: { 
    'Accept': 'application/json', 
} 
then(...) 

Тот же запрос https POST отлично работает на iOS.

Изменен на http, тот же запрос POST работает и на android.

Также попробовал GET-запрос через https на android, он мог бы получать данные с серверного сервера, как ожидалось.

Есть идеи?

Linked изображение является выходом из журнала консоли output from console log

+0

Вы используете Android-устройство, и если да, используете ли вы локальный хост как часть вашего URI? – MrDMAdev

+0

Я считаю, что вы можете легко ответить на мой вопрос: https://stackoverflow.com/q/48223906/949003 Спасибо – Jai

ответ

1

, относящиеся к вопросу Upgrade to OkHttp3 на реакцию нативным хранилище.

Отключить HTTP2 от вашего прокси-сервера, что и является причиной проблемы. Вы можете попробовать обновить до ответного v0.27, о котором они упоминают в журнале изменений, что они исправили эту проблему, но для меня это не сработало.

Мне пришлось отключить функцию http2 в ngnix, чтобы она работала.

отключение http2 действительно это просто, просто измените эту строку в файл конфигурации ngnix от:

listen 443 ssl http2;

в

listen 443 ssl;

затем перезарядить конфигурации:

service nginx reload

Более подробную информацию о http2 и ngnix можно найти here

+0

Я с реакцией-родной v0.28. Цените свой ответ, поскольку он наиболее подходит для проблемы, с которой я столкнулся. Не могли бы вы поделиться тем, как дезактивировать http2 в деталях, и можете ли вы поделиться с ним некоторым примером кода? –

+0

Вам необходимо отключить его в вашем балансе прокси/нагрузки. В моем случае я использую ngnix. Я обновлю свой ответ и добавлю ссылку. – lucasfeliciano

+0

Спасибо, Лукас! Просто узнал, что ngnix - это веб-сервер. Таким образом, работа вокруг заключается в отключении http2 на веб-сервере на задней панели, не так ли? –

2

Я столкнулся с такой же вопрос с андроида запросов «POST». Оказалось, заголовки вопрос, как указано в ссылке: https://github.com/facebook/react-native/issues/5222#issuecomment-170239302

Добавление следующие заголовки исправили проблему для меня

headers = { 
'Accept': 'application/json', 
'Authorization': 'Bearer ' + this.authToken, 
'Content-Type': 'application/x-www-form-urlencoded', 
} 
+0

ссылка, которую вы упомянули, отличается от моей. В моем случае нет проблемы с заголовком, и тот же запрос POST работает через HTTP. Он просто не работает на Android для HTTPS. –

+0

Не могли бы вы разместить свой код здесь и немного подробнее о сетевой ошибке? –

+0

@JohnWei, вы поняли решение?Я вижу то же самое, что и вы .. отлично работает через HTTP, но не HTTPS на android –

0

Я предполагаю, что у вас есть не разрешение в Интернет в вашем файле AndroidManifest.xml.

Пожалуйста, добавьте эту строку в вас AndroidManifest.xml файл:

<uses-permission android:name="android.permission.INTERNET" />

+0

. Разрешение INTERNET было включено в файл AndroidManifest.xml по умолчанию для приложения RN, так что это не так. –