Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


Excepción de host no resuelta en Android

Estoy tratando de llamar a un servicio web REST de una aplicación de Android mediante el siguiente método:

HttpHost target = new HttpHost("http://" + ServiceWrapper.SERVER_HOST,ServiceWrapper.SERVER_PORT); HttpGet get = new HttpGet("/list"); String result = null; HttpEntity entity = null; HttpClient client = new DefaultHttpClient(); try { HttpResponse response = client.execute(target, get); entity = response.getEntity(); result = EntityUtils.toString(entity); } catch (Exception e) { e.printStackTrace(); } finally { if (entity!=null) try { entity.consumeContent(); } catch (IOException e) {} } return result; 

Puedo navegar a la dirección y ver los resultados xml usando el navegador de Android Emulator y de mi máquina. He dado a mi aplicación el permiso de INTERNET.

Estoy desarrollando con eclipse.

He visto mencionó que podría necesitar configurar un proxy, pero ya que el servicio web que estoy llamando es en el puerto 80 esto no debería importar si? Puedo llamar al método con el navegador.

¿Algunas ideas?

  • Análisis de la cadena JSON de la URL (RESTful webservice) mediante las bibliotecas GSON. Androide
  • Certificado SSL para los servicios web REST (utilizados por Android)?
  • Retrofit 2 @path Vs @query
  • Aplicaciones Android y Android de etiqueta blanca
  • Ejemplo de programa para android Parche relajante usando xml API
  • Sincronizar cliente Android y servidor REST
  • Android Volley POST cadena en el cuerpo
  • Spring MVC, Thymeleaf y REST
  • 4 Solutions collect form web for “Excepción de host no resuelta en Android”

    Creo que el problema podría estar en la primera línea:

     new HttpHost("http://" + ServiceWrapper.SERVER_HOST,ServiceWrapper.SERVER_PORT); 

    El constructor HttpHost espera un nombre de host como su primer argumento, no un nombre de host con un prefijo "http://" .

    Intente eliminar "http://" y debería funcionar:

     new HttpHost(ServiceWrapper.SERVER_HOST,ServiceWrapper.SERVER_PORT); 

    El error significa que la URL no se puede resolver mediante DNS. Son muchos los problemas que podrían causar esto. Si se sienta detrás de un proxy, debe configurarlo para que lo utilice.

     HttpHost proxy = new HttpHost(”proxy”,port,”protocol”); client.getParams().setParameter(ConnRoutePNames.DEFAULT_PROXY, proxy); 

    También compruebe que su Internetpermission se parece a esto

     <uses-permission android:name=”android.permission.INTERNET”></uses-permission> 

    Como a veces no funcionará como etiqueta vacía.

    También compruebe Emulator Networking y la sección de limitaciones allí

    Volvería a comprobar que el permiso de red está configurado correctamente. Prueba algo básico como

     String address -"http://www.google.com"; URL url = new URL(address); InputStream in = url.openStream(); 

    Para verificar que tiene configurados los permisos correctamente.

    Después de eso utilice su analizador de protocolo favorito (soy un fan de wireshark) para calcular si está enviando los paquetes correctos. Creo que usted necesita pasar en la URL completa a HTTPGet pero soy solamente sobre el 80% seguro.

    Cambiar la primera línea en su código:

     HttpHost(ServiceWrapper.SERVER_HOST,ServiceWrapper.SERVER_PORT); 
    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.