"Ошибка сетевого запроса" с помощью response-native (даже с `android: usesCleartextTraffic =" true "`) - PullRequest
0 голосов
/ 08 мая 2020

Я сделал npx react-native init AwesomeProject, чтобы создать новый проект (я следую официальному руководству по началу работы . Когда я просто запускаю npx react-native start, а затем npx react-native run-android, ничего не настраивая, все работает нормально. Но мне нужно сделать вызов API, поэтому я попытался скопировать и вставить пример из официального сетевого руководства (только без try / catch, чтобы я мог видеть ошибки) в приложение. js ( сразу после импорта):

async function getMoviesFromApiAsync() {
    let response = await fetch(
        'https://reactnative.dev/movies.json'
    );
    let json = await response.json();
    console.log(json.movies);
    return json.movies;
}

Затем прямо под ним я добавил вызов этой функции:

getMoviesFromApiAsync();

Это дает мне ошибку Network request failed. Это полная ошибка сообщение, которое я вижу в Терминале:

Fri May 08 2020 10:23:00.325]  WARN     Possible Unhandled Promise Rejection (id: 0):
TypeError: Network request failed
onerror@http://10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false:28005:31
dispatchEvent@http://10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false:34133:31
setReadyState@http://10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false:33217:33
__didCompleteResponse@http://10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false:33044:29
emit@http://10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false:3420:42
__callFunction@http://10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false:2748:49
http://10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false:2470:31
__guard@http://10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false:2702:15
callFunctionReturnFlushedQueue@http://10.0.2.2:8081/index.bundle?platform=android&dev=true&minify=false:2469:21
callFunctionReturnFlushedQueue@[native code]

Я поискал в Google и в итоге попробовал следующее:

1) Я добавил android:usesCleartextTraffic="true" в AndroidManifest. xml

2) Я добавил кучу разрешений в AndroidManifest. xml:

<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />

3) Я добавил android:networkSecurityConfig="@xml/network_security_config" в AndroidManifest. xml

4) Я попытался установить прокси (10.0.2.2) и порт (8081), как указано в здесь

5) Я попытался удалить приложение из em ulator и его переустановка, а также очистка кеша (npx react-native start --reset-cache)

Вроде ничего не работает. Я по-прежнему получаю то же сообщение «Ошибка сетевого запроса».

Я использую React Native 0.62.2 на эмуляторе Pixel 2 API 28, работающем Android 9.0 на macOS Catalina.

1 Ответ

0 голосов
/ 08 мая 2020

Я тупой. Я занимаюсь этим целых три дня и только сейчас понял, что проблема в том, что у эмулятора не было доступа к inte rnet (даже после добавления android.permission.INTERNET в манифест). Решением было изменить DNS-адрес моей сети, как подробно описано в этот ответ .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...