android - Reacción nativa: error de solicitud de recuperación con error-TypeError: error de solicitud de red(...)
node.js express (2)
Dado que su dispositivo Android tiene una IP propia, debe apuntar la URL a la dirección IP de su computadora en lugar de solo a localhost. Por ejemplo, fetch(''http://192.168.0.2:3333/'')
.
Estoy desarrollando una aplicación simple usando React Native. Lo estoy probando en el dispositivo Android. He creado un servidor Node.js para escuchar las solicitudes, se ejecuta en http://localhost:3333/ . A continuación, estoy realizando una solicitud de recuperación desde index.android.js. A continuación se muestra el código.
fetch(''http://localhost:3333/'',
{
''method'': ''GET'',
''headers'': {
''Accept'': ''text/plain'',
}
}
)
.then((response) => response.text())
.then((responseText) => {
console.log(responseText);
})
.catch((error) => {
console.warn(error);
});
El código para el manejador de solicitudes en el servidor de nodo está abajo.
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();
});
Pero, la solicitud de búsqueda no está funcionando. El error que recibo en la consola de Chrome es: TypeError: error en la solicitud de red (...).
¿Cómo hacer que esto funcione?
Use el comando inverso de la herramienta 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>
Por ejemplo:
adb reverse tcp:3333 tcp:3333
Esto hace que localhost:3333
accesible desde su dispositivo. También puede utilizar diferentes puertos. Por ejemplo:
adb reverse tcp:8081 tcp:3333
Esto redireccionará el puerto del dispositivo 8081 al puerto local 3333.