我正在使用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);
});
节点服务器上的请求处理程序的代码在
之下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:网络请求失败(...)。
如何使这项工作?
答案 0 :(得分:28)
由于您的Android设备具有自己的IP,因此您需要将URL指向您的计算机IP地址,而不仅仅是localhost。例如fetch('http://192.168.0.2:3333/')
。
答案 1 :(得分:12)
使用Android Debug Bridge工具(adb)的反向命令:
id_Teacher
例如:
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
这会将设备端口8081重定向到本地端口3333。