2015-11-28 23 views
15

Sto sviluppando un'applicazione semplice utilizzando React Native. Lo sto testando su un dispositivo Android. Ho creato un server Node.js per ascoltare le richieste, è in esecuzione su http://localhost:3333/. Quindi, sto facendo una richiesta di recupero da index.android.js. Di seguito è riportato il codice.React Native: richiesta di recupero non riuscita con errore - TypeError: richiesta di rete non riuscita (...)

fetch('http://localhost:3333/', 
     { 
      'method': 'GET', 
      'headers': { 
       'Accept': 'text/plain',          
      } 
     }  
    ) 
.then((response) => response.text()) 
.then((responseText) => { 
    console.log(responseText); 
}) 
.catch((error) => { 
    console.warn(error); 
}); 

Il codice per il gestore di richieste sul server di nodo è sotto

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(); 
}); 

Ma, la richiesta di recupero non funziona. L'errore che ricevo nella console di Chrome è: TypeError: Richiesta di rete non riuscita (...).

Come fare questo lavoro?

risposta

27

Poiché il dispositivo Android ha un proprio indirizzo IP, è necessario puntare l'URL sull'indirizzo IP del computer anziché solo su localhost. Ad esempio fetch('http://192.168.0.2:3333/').

+0

Grazie! Ha funzionato. – Chetan

+0

Sto effettuando una chiamata all'url, ma continuo a ottenere lo stesso errore. prelettura ('http://private-18642-test2979.apiary-mock.com/notes/1', { metodo: 'get', 'intestazioni': { 'Accept': 'application/json' , } –

+0

Questo non è proprio un URL, è necessario aggiungere anche il protocollo – oblador

10

Utilizzare il contrario di comando dello strumento 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> 

Ad esempio:

adb reverse tcp:3333 tcp:3333 

Questo rende localhost:3333 accessibili dal dispositivo. Puoi anche usare porte diverse. Per esempio:

adb reverse tcp:8081 tcp:3333 

Questo reindirizzerà la porta del dispositivo 8081 alla porta di servizio 3333.

Problemi correlati