2012-09-21 16 views
10

Aparece el error "El host de destino no debe ser nulo ni estar configurado en parámetros".El nombre de host no puede ser nulo en HttpResponse para android

  • HAGO tienen permisos de Internet en mi archivo de manifiesto
  • he puesto 'http: //' antes de mi Url
  • HAGO codificar la URL

Este es mi código:

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

En la 5ª línea (última línea arriba), mi programa arroja una excepción. aquí es el error exacto:

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

I Do codificar mi cadena en convertURL método ...

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

¿Alguna sugerencia? Gracias!

+0

¡No puede haber espacios en la URL! déjame ver cómo estás codificando tu URL – Samer

+0

Tu problema probablemente esté en tu función convertURL ... usa un depurador y comprueba para ver qué está devolviendo. – Joel

+0

¡Hola! Estaba pasando toda la URL, la modifiqué pero todavía me da el error ... 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' – cafesanu

Respuesta

5

No estoy seguro de cuál es su método de codificación URL está haciendo, pero si está utilizando un método del marco como URLEncoder, , nunca debe pasar la URL completa, solo la lista de parámetros que necesita codificar para escapar de los caracteres especiales.

que codifica la URL completa voluntad ciento de escape cada personaje, incluyendo el :// en %3A%2F%2F y todas las barras adicionales en %2F.

Eche un vistazo al valor de su cadena goodUrl después de codificarlo.

+0

¡Hola! Estaba pasando toda la URL, la modifiqué pero todavía me da un error ... goodURL es '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' – cafesanu

+0

Ok, ustedes estaban en lo cierto! Estaba pasando toda la URL ... Lo arreglé pero ahora me da esta excepción. android.os.NetworkOnMainThreadException pero puedo investigar de qué se trata esto ... ¡Gracias! – cafesanu

+2

"NetworkOnMainThreadException" significa exactamente lo que dice. Android no le permite hacer acceso a la red desde el hilo principal porque bloqueará la interfaz de usuario; debe crear un hilo de fondo para E/S de red. Puede obtener más información de este artículo de capacitación: http://developer.android.com/training/basics/network-ops/index.html – Devunwired

1

sólo tiene que utilizar:

URLEncoder.encode(YOUR_STRING); 
+0

i Codifica mi cadena en el método convertURL ... así que ese no es el problema ... – cafesanu

1

codifican la cadena de URL antes de publicar la solicitud, pero sólo codificar los parámetros después de la:?

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 mi cadena en el método convertURL ... así que ese no es el problema ... – cafesanu

+0

Me pregunto si URLEncode está codificando todo en esa cadena, incluido el nombre de host. En su ejemplo anterior, ¿cómo se ve GoodURL? En lugar de String, intente usar el objeto URL y establezca el nombre de host y los recursos en eso. – AWT

+0

¡Hola! Estaba pasando toda la URL, la modifiqué pero todavía me da un error ... goodURL es 'http://maps.google.com/maps/api/directions/json?origen = 3% 20Cedar% 20Ave% 2c% 20Highland% 20Park% 2c% 20NJ% 2008904 & destination = 604% 20Bartholomew% 20Road% 2c% 20Piscataway% 2c% 20New% 20Jersey% 2008854 & sensor = false' – cafesanu

Cuestiones relacionadas