Exception d’hôte non résolue Android

J’essaie d’appeler un service Web RESTful à partir d’une application Android à l’aide de la méthode suivante:

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

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

Je développe avec eclipse.

J’ai déjà vu que je devrais peut-être configurer un proxy, mais comme le service Web que j’appelle est sur le port 80, cela ne devrait pas avoir d’importance. Je peux appeler la méthode avec le navigateur.

Des idées?

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 attend un nom d’hôte comme 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. Il y a beaucoup de problèmes qui pourraient causer ceci. Si vous êtes assis derrière un proxy, vous devez le configurer pour qu’il soit utilisé.

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

Vérifiez également que votre internetpermission ressemble à ceci

  

Comme parfois, cela ne fonctionnera pas comme balise vide.

Consultez également la section Mise en réseau de l’émulateur et la section des limitations.

Je vérifierais que l’autorisation de réseau est définie correctement. Essayez quelque chose de base comme

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

pour vérifier que vous avez bien configuré vos permissions.

Après cela, utilisez votre parsingur de protocole préféré (je suis un fan de Weashark) pour déterminer si vous envoyez les bons paquets. Je crois que vous devez transmettre l’URL complète à HTTPGet, mais je ne suis sûr que d’environ 80%.

Changer la première ligne de votre code:

 HttpHost(ServiceWrapper.SERVER_HOST,ServiceWrapper.SERVER_PORT);