2012-09-21 11 views
10

Viene visualizzato l'errore "L'host di destinazione non deve essere nullo o impostato nei parametri".Il nome host potrebbe non essere nullo in HttpResponse execute per android

  • FACCIO hanno permesso Internet nel mio file manifesto
  • Ho messo 'http: //' prima del mio URL
  • FACCIO codificare l'URL

Questo è il mio codice:

String url = "http://maps.google.com/maps/api/directions/json?origin=1600 Pennsylvania Avenue NW, Washington, DC 20500&destination=1029 Vermont Ave NW, Washington, DC 20005&sensor=false"; 
    HttpClient httpclient = new DefaultHttpClient(); 
    String goodURL = convertURL(url);//change weird characters for %etc 
    HttpPost httppost = new HttpPost(goodURL); 
    HttpResponse response = httpclient.execute(httppost); 

Nella quinta riga (ultima riga sopra), il mio programma genera un'eccezione. qui è l'errore esatto:

java.lang.IllegalArgumentException: Host name may not be null 

I Do codificare la mia stringa nel metodo convertURL ...

goodURL = http://maps.google.com/maps/api/directions/json?origin=3%20Cedar%20Ave%2c%20Highland%20Park%2c%20NJ%2008904&destination=604%20Bartholomew%20Road%2c%20Piscataway%2c%20New%20Jersey%2008854&sensor=false

Qualche suggerimento? Grazie!

+0

Non è possibile avere spazi nell'URL! fammi vedere come stai codificando il tuo URL – Samer

+0

Il tuo problema è probabilmente nella tua funzione convertURL ... usa un debugger e controlla per vedere cosa sta tornando. – Joel

+0

Ciao! Stavo passando l'intero URL, l'ho modificato ma continua a darmi l'errore ... goodURL = 'http://maps.google.com/maps/api/directions/json?origin=3%20Cedar%20Ave%2c % 20Highland% 20Park% 2c% 20NJ% 2008904 e destinazione = 604% 20Bartholomew% 20Road% 2c% 20Piscataway% 2c% 20New% 20Jersey% 2008854 & sensor = false' – cafesanu

risposta

5

Non sono sicuro di ciò che il vostro metodo di codifica URL sta facendo, ma se si utilizza un metodo dal framework come URLEncoder, , non si dovrebbe mai passare l'intero URL, solo l'elenco dei parametri che è necessario codificare per evitare caratteri speciali.

La codifica dell'URL completo sfugge per percentuale a ogni carattere, incluso lo :// in %3A%2F%2F e tutte le barre aggiuntive in %2F.

Dai un'occhiata al valore della tua stringa goodUrl dopo averlo codificato.

+0

Ciao! Stavo passando l'intero URL, l'ho modificato ma continua a darmi un errore .... goodURL è 'http://maps.google.com/maps/api/directions/json?origin=3%20Cedar%20Ave% 2c% 20Highland% 20Park% 2c% 20NJ% 2008904 e destinazione = 604% 20Bartholomew% 20Road% 2c% 20Piscataway% 2c% 20New% 20Jersey% 2008854 & sensor = false' – cafesanu

+0

Ok, ragazzi, avete ragione! Stavo passando l'intero URL ... l'ho risolto ma ora mi dà questa eccezione! android.os.NetworkOnMainThreadException ma posso ricercare di cosa si tratta ... Grazie! – cafesanu

+2

"NetworkOnMainThreadException" significa esattamente ciò che dice. Android non ti consente di accedere alla rete dal thread principale perché bloccherà l'interfaccia utente; è necessario creare un thread in background per l'I/O di rete. Puoi imparare di più da questo articolo di formazione: http://developer.android.com/training/basics/network-ops/index.html – Devunwired

1

Basta usare:

URLEncoder.encode(YOUR_STRING); 
+0

i Codifica la mia stringa nel metodo convertURL ... quindi non è questo il problema ... – cafesanu

1

codificare la stringa URL prima di postare la richiesta, ma solo codificare i parametri dopo il:?

String url = "http://maps.google.com/maps/api/directions/json?"; 
String params = "origin=1600 Pennsylvania Avenue NW, Washington, DC 20500&destination=1029 Vermont Ave NW, Washington, DC 20005&sensor=false"; 
HttpClient httpclient = new DefaultHttpClient(); 
String goodParams = convertURL(params);//change weird characters for %etc 
HttpPost httppost = new HttpPost(url + goodParams); 
HttpResponse response = httpclient.execute(httppost); 
+0

i Codifica la mia stringa nel metodo convertURL ... quindi non è questo il problema ... – cafesanu

+0

Mi chiedo se URLEncode codifica tutto in quella stringa, incluso il nome host. Nel tuo esempio sopra, che aspetto ha GoodURL? Invece di String, prova a utilizzare l'oggetto URL e imposta il nome host e le risorse in questo. – AWT

+0

Ciao! Stavo passando l'intero URL, l'ho modificato ma continua a darmi un errore .... goodURL è 'http://maps.google.com/maps/api/directions/json?origine = 3% 20Cena% 20Avento% 2c% 20Altopiano% 20Park% 2c% 20NJ% 2008904 e destinazione = 604% 20Bartholomew% 20Road% 2c% 20Piscataway% 2c% 20New% 20Jersey% 2008854 & sensor = false' – cafesanu

Problemi correlati