68 votes

Android: UnknownHostException

J'utilise Android SDK 2.2 et teste mon application avec l'émulateur. Je veux envoyer un HTTP Post. Quand je reçois une exception UnknownHostException. J'ai placé les autorisations requises
<uses-permission android:name="android.permission.INTERNET" / >
dans le fichier manifest.xml. De plus, je peux ouvrir le navigateur sur l'émulateur et accéder à l'URL sans problème.

Voici mon code:

 HttpClient httpclient = new DefaultHttpClient();
HttpPost httppost = new HttpPost( uri );
HttpResponse response = null;
try
{
// Add your data
List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(
2 );
nameValuePairs.add( new BasicNameValuePair( "id", "edit-name" ) );
nameValuePairs
.add( new BasicNameValuePair( "stringdata", userName ) );
httppost.setEntity( new UrlEncodedFormEntity( nameValuePairs ) );

// Execute HTTP Post Request
response = httpclient.execute( httppost );
// Log.i( "HttpManager:", "======> response: "
// + response.getEntity().getContent() );

}
catch (ClientProtocolException e)
{
Log.e( "HttpManager", "ClientProtocolException thrown" + e );
}
catch (IOException e)
{
Log.e( "HttpManager", "IOException thrown" + e );
}
 

116voto

anisbet Points 1597

Ok, je me sens plutôt boiteux ... La balise de permission INTERNET est un enfant de la balise manifeste, pas de la balise d'application. Sheesh!

51voto

Frank V Points 9690

Pour les autres examen, j'ai couru à ce problème et Google m'a débarqué. Comme mentionné par anisbet, j'ai vérifié ma permission balise et qu'il était au bon endroit.

Finalement, j'ai tiré le android navigateur intégré et obtient la même réponse de mon serveur web en tant que bien que Google.com (alors que l'ordinateur lui-même était très bien). J'ai résilié l'émulateur android et redémarré; a travaillé sur le premier essai.

Après examen de votre code, il peut être intéressant de redémarrer l'émulateur. En toute équité à l'émulateur, un tas de programmes s'est écrasé peu de temps après avoir fait cela, alors peut-être que quelque chose d'autre se passe dans mon ordinateur. Encore, cela a gâché une tonne de temps pour moi alors peut-être que cela permettra de sauver quelqu'un le mal de tête, je suis allé bien.

Bonne Chance!

34voto

igo Points 700

Assurez-vous d'avoir une connexion Internet. C'est ce qui m'est arrivé lorsque j'ai oublié que je testais avec un téléphone mobile sans connexion Internet.

17voto

Moritz Points 947

Vous savez ce qui a résolu le problème pour moi était de placer l'autorisation juste avant la balise du manifeste de fermeture, comme ceci:

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

9voto

java dev Points 340

Cela arrive parfois lorsque vous exécutez une application dans l'émulateur. Il suffit de redémarrer l'émulateur pour résoudre le problème. Cela a fonctionné pour moi!

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X