Ответ 1
Поскольку ваше Android-устройство имеет собственный IP-адрес, вам нужно указать URL-адрес на ваш IP-адрес компьютера, а не только на localhost. Например fetch('http://192.168.0.2:3333/')
.
Я разрабатываю простое приложение с использованием React Native. Я тестирую его на устройстве Android. Я создал сервер Node.js для прослушивания запросов, он работает на http://localhost:3333/. Затем я делаю запрос на выборку из index.android.js. Ниже приведен код.
fetch('http://localhost:3333/',
{
'method': 'GET',
'headers': {
'Accept': 'text/plain',
}
}
)
.then((response) => response.text())
.then((responseText) => {
console.log(responseText);
})
.catch((error) => {
console.warn(error);
});
Код обработчика запроса на сервере node ниже
app.use(function(req, res, next) {
res.header("Access-Control-Allow-Origin", "*");
res.header("Access-Control-Allow-Headers", "Origin, X-Requested-With, Content-Type, Accept");
next();
});
app.use(express.static('public'));
app.get('/', function(req, res){
console.log('Request received for /');
res.send("this is the response from the server");
res.end();
});
Но запрос на выбор не работает. Ошибка, которую я получаю в консоли Chrome: TypeError: сбой сетевого запроса (...).
Как это сделать?
Поскольку ваше Android-устройство имеет собственный IP-адрес, вам нужно указать URL-адрес на ваш IP-адрес компьютера, а не только на localhost. Например fetch('http://192.168.0.2:3333/')
.
Используйте команду reverse для инструмента Android Debug Bridge (adb):
adb reverse <remote> <local> - reverse socket connections.
reverse specs are one of:
tcp:<port>
localabstract:<unix domain socket name>
localreserved:<unix domain socket name>
localfilesystem:<unix domain socket name>
Например:
adb reverse tcp:3333 tcp:3333
Это делает доступным localhost:3333
с вашего устройства. Вы также можете использовать разные порты. Например:
adb reverse tcp:8081 tcp:3333
Это перенаправит порт 8081 устройства на служебный порт 3333.