Anomalie de l'hôte non résolue Android

J'essaie d'appeler un service Web RESTful à partir d'une application Android en utilisant la méthode suivante:

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; 

Je peux naviguer vers l'adresse et voir les résultats xml à l'aide du navigateur Emulator Android et de ma machine. J'ai donné à ma application la permission de l'INTERNET.

  • Afficher la boîte de dialogue de la rotation pendant le chargement des données sur Android
  • Studio Android: application de débogage sur l'appareil
  • Comment Canvas détermine-t-elle ses limites de clip?
  • Android - Prévention du rechargement WebView sur Rotate
  • Pourquoi Google a-t-il choisi Java pour le système d'exploitation Android?
  • Android: AndroidHttpClient - comment définir le délai d'attente?
  • Je développe avec eclipse.

    J'ai vu qu'il a mentionné que je devrais peut-être configurer un proxy, mais puisque le service Web que j'appelle est sur le port 80, cela ne devrait-il pas être important? Je peux appeler la méthode avec le navigateur.

    Des idées?

    4 Solutions collect form web for “Anomalie de l'hôte non résolue Android”

    Je pense que le problème pourrait être sur la première ligne:

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

    Le constructeur HttpHost s'attend à ce qu'un nom d'hôte soit son premier argument, et non un nom d'hôte avec un préfixe "http://" .

    Essayez de supprimer "http://" et cela devrait fonctionner:

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

    L'erreur signifie que l'URL ne peut pas être résolue via DNS. Ce sont de nombreux problèmes qui pourraient causer cela. Si vous vous asseyez derrière un proxy, vous devez l'utiliser pour l'utiliser.

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

    Vérifiez également que votre application internet ressemble à ceci

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

    Comme parfois, il ne fonctionnera pas comme étiquette vide.

    Découvrez également Emulator Networking et la section des limitations là-bas

    Je vérifierais que l'autorisation du réseau soit correctement définie. Essayez quelque chose de basique comme

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

    Pour vérifier que vos autorisations sont configurées correctement.

    Ensuite, utilisez votre analyseur de protocole préféré (je suis un fan de wireshark) pour figurer si vous envoyez les bons paquets. Je crois que vous devez passer l'URL complète à HTTPGet mais je suis sûr que seulement 80%.

    Changer la première ligne dans votre code:

     HttpHost(ServiceWrapper.SERVER_HOST,ServiceWrapper.SERVER_PORT); 
    coAndroid est un fan Android de Google, tout sur les téléphones Android, Android Wear, Android Dev et Android Games Apps.