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 );
}
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!
Pour la considération des autres, je suis tombé sur ce problème et un Google m'a atterri. Comme mentionné par anisbet, j'ai vérifié deux fois mon étiquette d'autorisation et elle était au bon endroit.
J'ai finalement activé le navigateur intégré à Android et la même réponse a été reçue de mon serveur Web ainsi que de Google.com (alors que l'ordinateur lui-même allait bien). J'ai terminé l'émulateur Android et redémarré; travaillé du premier coup.
Après avoir examiné votre code, il peut être intéressant de redémarrer l'émulateur. En toute justice pour l'émulateur, un tas de programmes sont tombés en panne peu de temps après, alors peut-être que quelque chose d'autre se passait dans mon ordinateur. Pourtant, cela m'a fait perdre une tonne de temps, alors cela sauvera peut-être le mal de tête que j'ai subi.
Bonne chance!
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.
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>
Cela se produit 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!
Si rien de ce qui précède ne fonctionne, essayez de prendre du recul et de vous assurer que votre appareil ou votre émulateur peut réellement atteindre Internet en ouvrant un navigateur.
J'ai couru dans le même problème. J'ai les autorisations correctes dans mon fichier de manifeste Android et l'URL est également correcte. Je reçois la réponse dans le navigateur Web. J'ai redémarré l'EDI, Emulator, mais je n'ai pas résolu le problème. J'ai donc supprimé le fichier AVD à l'aide du gestionnaire AVD, puis démarré l'émulateur et tout a commencé à fonctionner.
Une dernière vérification serait que votre nom de domaine est un domaine valide. Avoir un soulignement dans un domaine n'est pas valide et lève une exception d'hôte inconnue.
J'ai rencontré un problème similaire lors du test d'une application ayant une minSdkVersion définie sur 4 et j'essayais de l'exécuter sur un G1. Le changer en 3 résolut le problème pour moi.
Une autre chose: il s’est avéré qu’Internet ne fonctionnait pas pour moi. Le lancement de l'émulateur à partir de la ligne de commande avec ces commutateurs l'a corrigé pour moi: emulator -avd your_avd_name -dns-server 8.8.8.8
J'ai vu cette erreur lorsque je suis connecté au WiFi. Dès que j'ai désactivé le WiFi, cela a fonctionné. UnknownHostException
pourrait très bien être lancé à cause de ce bogue Android:
Si vous ouvrez un VPN, une "exception d’hôte inconnu" peut en résulter
J'ai rencontré le même problème lors de l'utilisation de l'émulateur, car j'avais changé le wifi sur mon ordinateur portable, donc le redémarrage de l'émulateur a résolu mon problème.
Cochez aussi si vous n'utilisez pas Emulator
J'ai le même problème aujourd'hui, je n'utilise pas Emulator, mais j'active le débogage USB dans les appareils mobiles pour les tests.
Je n'ai pas activé les données sur mon téléphone portable, alors j'ai eu UnknownHostException
, une fois que je l'ai activé, cela a été résolu.