#javascript #android #react-native #fetch
#javascript #Android #реагировать-родной #выборка
Вопрос:
Я пишу приложение React Native для запуска на телефоне Android. В приложении я буду извлекать данные из веб-службы .NET в локальной сети (используя порт 8085).
Когда я тестирую приложение на эмуляторе, выборка выполняется, как и ожидалось. Но когда я запускаю его на своем телефоне, выборка всегда завершается ошибкой Ошибка сетевого запроса (сервер и телефон находятся в одной локальной сети).
Я попытался изменить порт на 80, и приложение на моем телефоне заработало, как и ожидалось.
Я также отключаю все остальные веб-сайты в IIS, но та же проблема с портом <> 80.
Я провел некоторые исследования в Google (много раз он перенаправлял меня на SO и Github), но безуспешно.
Ниже приведена моя выборка:
_getValue1 = async () => {
try {
const response = await fetch('http://192.168.1.165:8085/index.aspx/GetValue1', {
body: JSON.stringify({ Usr: ... }),
headers: {
'accept': 'application/json; charset=utf-8',
'content-type': 'application/json; charset=utf-8',
},
method: 'POST',
});
const json = await response.json();
// do things with the json result
}
catch (err) {
// always go here if run on real phone with url port other than 80
}
}
У кого есть опыт работы с этой проблемой, пожалуйста, помогите, заранее спасибо.
Комментарии:
1. Существует нечто, называемое брандмауэром, которое может блокировать порт. Поскольку вы используете IIS, вот ссылка для включения порта. tomshardware.com/news/… Просто включите требуемый порт. Я надеюсь, это поможет.
2. После того, как я разрешаю вход на порт 8085 в брандмауэре, все работает так, как ожидалось. Спасибо за помощь Шриваставу в комментарии.