Intereting Posts
Полноэкранное уведомление, показывающее только заголовки Скользящее меню блокирует событие касания в верхнем виде Android. Возможно ли создать пользовательскую библиотеку для использования в нескольких приложениях? Удалить ошибку из EditText PlaceAutocomplete получает неизвестный код статуса: 9000 Архитектура Android-приложения – куда поместить код вызова REST API? Android: как установить событие onClick для кнопки в элементе списка в ListView Как программно найти внешний IP-адрес устройства без использования внешнего хоста? Исходная авария для Android, начинающаяся с /system/framework/arm/boot.oat Кинжал 2 – два обеспечивает метод, обеспечивающий тот же интерфейс IllegalArgumentException: неуправляемый дескриптор с использованием gms.maps.model.Marker.setIcon Установлена ​​последняя версия Android Studio, Исключение произошло, когда я построил проект? Что происходит с мероприятиями / услугами, когда телефон переходит в режим ожидания / ожидания? Напечатать символ авторского права в TextView Как определить длительное касание на Android?

React Native Android Fetch failing при подключении к локальному API

Я использую API-интерфейс fetch в своем мобильном приложении для Android, чтобы делать запросы к локальному API. Я обычно обращаюсь к указанному API с помощью веб-приложений, связанных с http: // localhost: 8163 .

Я тестирую свое приложение на своем физическом устройстве в режиме отладчика. Я где-то читал, что response-native не может запрашивать localhost так же, как это может делать веб-приложение. Очевидно, вы должны использовать http://10.0.2.2:[PORT_NUMBER_HERE]/ который является псевдонимом для ` http://127.0.0.1:[PORT_NUMBER_HERE] в соответствии с док-станциями Android-эмулятора. Я не уверен, что это то, что я должен делать для тестирования на физическом устройстве.

Код моей выборки выглядит следующим образом:

 fetchToken() { fetch('http://10.0.2.2:8163/extension/auth', { method: 'GET', headers: { 'Accept': 'application/json', 'Content-type': 'application/json' } }) .then((response)) => console.log('successful fetchToken response: ', response.json())) .catch((error) => console.log('fetchToken error: ', error)) .done(); } 

Запрос всегда зависает некоторое время, а затем достигает блока catch с бесполезной ошибкой TypeError: Network request failed(...) . Проверяя журналы для моего локального API, они вообще не регистрируют запрос.

Поэтому я понятия не имею, правильно ли я запрашиваю свой локальный API, чтобы получить тот ресурс, который я хочу, и если да, то я не знаю, почему сбой неудачен.

Solutions Collecting From Web of "React Native Android Fetch failing при подключении к локальному API"

Вы не можете получить доступ к локальному серверу разработки, потому что этот порт еще не был отправлен ADB. Когда вы запускаете react-native run-android run react-native run-android , React Native отображает порт 8081 с вашим мобильным устройством на USB-устройстве. Когда вы отключите USB-порт, вы не сможете обновить или снова перезагрузить свой код. Таким образом, в этой ситуации вы можете сделать 2 вещи: либо сопоставьте свой локальный серверный порт так, как React Native, либо используйте свой локальный IP-адрес.

  1. Порт сопоставления

    Это работает, только если вы используете Android 6.0+. Чтобы переадресовать порт с помощью ADB, выполните следующую команду в своем терминале:

     adb reverse tcp:8163 tcp:8163 

    Это отобразит ваш локальный порт 8163 порта 8163 для мобильных устройств. Таким образом, вы сможете получить доступ к серверу разработки.

  2. Использование локального IP-адреса

    Вы также можете использовать свой локальный IP-адрес для приложения React Native для перезагрузки без USB. Встряхните устройство или долго нажмите кнопку меню, чтобы открыть меню разработчика. Откройте Dev Settings , затем нажмите « Debug server host & port for device . Здесь вы можете ввести локальный IP-адрес вашего компьютера с номером порта 8081 . Напр. Если ваш IP-адрес устройства 192.168.1.100 тогда вы должны ввести здесь 192.168.1.100:8081 для успешного соединения. Теперь мы рассмотрели, что мы можем перезагрузить приложение. После этого, когда вы хотите использовать сервер разработки вашего локального компьютера, используйте тот же IP-адрес с номером порта вашего сервера.

Вы должны быть добры, чтобы пойти с этим.