Сбой сетевого запроса на устройстве Android с использованием fetch - PullRequest
0 голосов
/ 31 марта 2020

При использовании fetch в React Native на Android эмуляторе / реальном устройстве появляется ошибка «Сетевой запрос не выполнен». Код ниже:

 fetch('http://localhost:3000/response', {
      method: 'POST',
      headers: {
          Accept: "aplication/json;charset=UTF-8",
          "Content-Type": "application/json"
      },
      body:JSON.stringify({name: "abc", email: "something@gmail.com"}),
      })
      .then((response) => response.json())
      .then((responseJson) => {

          alert('response object:' + JSON.stringify(responseJson));

          if(responseJson.valid === true){
              // do something

          }

      })
      .catch((error) => {
        console.error(error);
        alert(error);
      });

    });

Я пытался это исправить, добавив "app.use (cors ());" на express сервере. Это исправление работает, когда я симулирую в сети, но все еще не работает на эмуляторе или реальном устройстве.

Ответы [ 3 ]

0 голосов
/ 31 марта 2020

У вас есть 2 варианта:

  • Либо реализуйте https для вашей конечной точки API, как упомянул Нилам,
  • , либо добавьте clearTextTraffi c true в свой AndroidManifest, как упомянул здесь Абд, как вы можно сделать это:
<?xml version="1.0" encoding="utf-8"?>
<manifest ...>
    <uses-permission android:name="android.permission.INTERNET" />
    <application
        ...
        android:usesCleartextTraffic="true"
        ...>
        ...
    </application>
</manifest>
0 голосов
/ 31 марта 2020

React native не работает, когда вы выбираете localhost url, а вместо localhost вы должны указать IP-адрес, чтобы убедиться, что устройства находятся в сети. Просто замените localhost вашим IP-адресом. И убедитесь, что ваш мобильный телефон подключен к той же сети Wi-Fi или сети.

fetch('http://yourIPaddress:3000/response', {
      method: 'POST',

Спросите, есть ли запрос.

0 голосов
/ 31 марта 2020

используйте защищенные серверные ссылки https, у вас должно работать

...