2011-09-17 16 views
5

Ho un server API REST python in esecuzione sul mio laptop. Sto provando a scrivere un client di riposo su Android (usando Eclipse ADT ecc.) Per contattarlo usando le librerie client (org.apache.http.client) di Apache.Impossibile contattare la macchina host (10.0.2.2) dall'emulatore

il codice è molto semplice, e in fondo fa il seguente -

HttpGet httpget = new HttpGet(new URI("http://10.0.2.2:8000/user?username=tim")); 
HttpResponse response = httpclient.execute(httpget); 

Tuttavia a eseguire, esso eccezioni con un'eccezione time out. Non riesco a raggiungere l'URL anche dal browser nell'emulatore.

dettagli dell'eccezione

org.apache.http.conn.ConnectTimeoutException: Connect to /10.0.2.2:8000 timed out 

Tuttavia, ho provato ad utilizzare il client di cresta su Chrome sul mio portatile, e sono in grado di interrogare il server di multa REST.

+1

Sei stato in grado di capirlo? Ho riscontrato esattamente lo stesso problema e sono un po 'bloccato a sistemarlo ... –

risposta

0

È possibile che la macchina non sia sulla rete? Vale a dire - è dall'altra parte di un router, su internet da qualche parte? Perché gli indirizzi iniziano con "10." sono riservati come indirizzi privati ​​e non instradabili.

Vedi http://en.wikipedia.org/wiki/Private_network per ulteriori informazioni

0

ho avuto lo stesso problema ed ecco come ho capito la causa:

Quit You emulatore. Avvia il tuo server locale. Nel browser, dovresti essere in grado di accedere a "http: // localhost: 8000/user? Username = tim" e ottenere una risposta. Se si verifica un timeout, è probabile che il server non sia in esecuzione. Nel mio caso, il mio server python aveva un set di break-point ed era bloccato lì. Una volta che l'ho lasciato girare, sono stato in grado di vedere le risposte sul browser e successivamente nell'emulatore (usando 10.0.2.2).

Problemi correlati