Когда я создаю новый проект с использованием react-native init
(версия 0.29.1 RN) и помещаю выборку в метод рендеринга в общедоступный API демо-фильма Facebook, он выдает a Network Request Failed
. Существует очень бесполезная трассировка стека, и я не могу отлаживать сетевые запросы в консоли Chrome. Вот выручка, которую я отправляю:
fetch('http://facebook.github.io/react-native/movies.json')
.then((response) => response.json())
.then((responseJson) => {
return responseJson.movies;
})
.catch((error) => {
console.error(error);
});
javascript
react-native
fetch-api
Алек Херст
источник
источник
http
->https
(если возможно), скорее всего, решит вашу проблему192.168.1.25:3000
изifconfig
без привязки моего сервера к этому IPrails server --binging=192.168.1.25 --port=3000
Ответы:
Проблема здесь в том, что iOS не разрешает HTTP-запросы по умолчанию, только HTTPS. Если вы хотите включить HTTP-запросы, добавьте это в
info.plist
:источник
Не рекомендуется разрешать все домены для http. Сделайте исключение только для необходимых доменов.
Источник: Настройка исключений безопасности транспорта приложений в iOS 9 и OSX 10.11
Добавьте следующее в файл info.plist вашего приложения:
источник
Я использовал
localhost
для адреса, который был явно неправ. После замены его на IP-адрес сервера (в сети, в которой находится эмулятор), все заработало отлично.редактировать
В эмуляторе Android адрес машины для разработки есть
10.0.2.2
. Больше объяснений здесьДля Genymotion, адрес есть
10.0.3.2
. Больше информации здесьисточник
http://<Network IP emulator connects to>:<port where API is served>/api/tasks
Для нас это было потому, что мы загружали файл, а RN filePicker не давал правильный тип пантомимы. Это просто дало нам «образ» как тип. Нам нужно было изменить его на «image / jpg», чтобы заставить работу работать.
источник
React Native Docs дает ответ на этот вопрос.
Реагирование на собственные документы -> Интеграция с существующими приложениями -> Проверка интеграции -> Добавить исключение безопасности транспорта приложения
источник
Проблема может быть в конфигурации сервера.
В Android 7.0 есть ошибка, описанная здесь . Временное решение, предложенное Вики Chijwani:
источник
У меня та же проблема на Android, но мне удалось найти решение для нее. Android блокирует трафик открытым текстом (не https-запросы), начиная с уровня API 28 по умолчанию. Однако Reaction-native добавляет к отладочной версии (
android/app/src/debug/res/xml/react_native_config.xml
) конфигурацию сетевой безопасности, которая определяет некоторые домены (localhost и IP-адреса хоста для AVD / Genymotion), которые можно использовать без SSL в режиме dev. Вы можете добавить свой домен туда, чтобы разрешить http-запросы.источник
Я получил ту же проблему на Android 9 из-за «http», и проблема была решена простым добавлением android: использованииCleartextTraffic = "true" в AndroidManifest.xml
источник
Я столкнулся с той же проблемой в эмуляторе Android, где пытался получить доступ к внешнему URL-адресу HTTPS с действующим сертификатом. Но получить этот URL-адрес в реакции-родной не удалось
1) Чтобы узнать точную ошибку в журналах, я сначала включил «Отладку JS Remote», используя Cmd + M в приложении
2) Сообщение об ошибке было
3) Я добавил действительный сертификат URL, используя этот метод -> ШАГ 2
Этот сертификат добавляется на вкладку Пользователь.
4) Добавьте атрибут
android:networkSecurityConfig
атрибута в AndroidManifest.xmlДобавить файл конфигурации сетевой безопасности
res/xml/network_security_config.xml:
Это должно сработать и дать вам ожидаемый ответ.
источник
У меня была эта проблема для Android-
URL-адрес localhost / authToken.json - не работает :(
URL-адрес 10.106.105.103/authToken.json - не работает :(
URL - http://10.106.105.103/authToken.json - сработало :): D
Примечание. Используйте
ifconfig
в Linux илиipconfig
в Windows, чтобы найти IpAddress компьютера.источник
Для пользователя Android:
Замените
localhost
s на IP-адреса Lan, потому что при запуске проекта на устройстве Android localhost указывает на устройство Android, а не на компьютер, например: изменитеhttp://localost
наhttp://192.168.1.123
источник
Для Android вы, возможно, пропустили добавить разрешение в AndroidManifest.xml Необходимо добавить следующее разрешение.
источник
У меня похожая проблема. В моем случае запросы к localhost работали и внезапно прекратились. Оказалось, что проблема была в том, что я отключил свой Wi-Fi на моем телефоне Android.
источник
Это сработало для меня, Android использует специальный тип IP-адреса 10.0.2.2, а затем номер порта
источник
если вы используете докер для REST API, рабочий случай для меня должен был заменить имя хоста:
http://demo.test/api
с IP - адресом машины:http://x.x.x.x/api
. Вы можете узнать IP-адрес, проверив, какой ipv4 используется в вашей беспроводной сети. Вы должны иметь также Wi-Fi с телефона.источник
Вы должны обработать ошибку в .then для получения API.
Например:
источник
Добавьте
android:usesCleartextTraffic="true"
строку в AndroidManifest.xml.Удалите все папки отладки из папки Android.
источник
Вы можете справиться с этим, используя это:
источник
Просто у вас есть изменения в Fetch ....
источник
Для устройств Android перейдите в корневую папку вашего проекта и выполните команду:
например,
adb reverse tcp:8088 tcp:8088
Это заставит ваше физическое устройство (например, телефон Android) прослушивать сервер localhost, работающий на вашем компьютере разработчика (то есть на вашем компьютере) по адресу http: // localhost: [your_own_server_port] .
После этого вы можете напрямую использовать
http:localhost:[your_port] /your_api
в своем реактивномfetch(
вызове.источник
Для android добавьте android: networkSecurityConfig = "@ xml / network_security_config" в тег приложения в AndroidManifest.xml, например так:
Содержание файла network_security_config.xml:
источник
Пример:
источник