web-dev-qa-db-de.com

Android: UnknownHostException

Ich verwende Android SDK 2.2 und teste meine Anwendung mit dem Emulator. Ich möchte eine HTTP-Post senden. Wenn ich dies erhalte, erhalte ich eine UnknownHostException. Ich habe die erforderlichen Berechtigungen gesetzt 
<uses-permission Android:name="Android.permission.INTERNET" />
in der manifest.xml. Außerdem kann ich den Browser im Emulator öffnen und problemlos zur URL navigieren.

Hier ist mein 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 );
}
68
anisbet

Ok, ich fühle mich ziemlich lahm ... Das INTERNET-Berechtigungs-Tag ist ein Kind des Manifest-Tags, nicht das Anwendungs-Tag. Sheesh!

116
anisbet

Für andere Überlegungen bin ich auf dieses Problem gestoßen und ein Google hat mich gelandet. Wie von anisbet erwähnt, habe ich mein Erlaubnis-Tag noch einmal geprüft und es war an der richtigen Stelle. 

Ich schaltete schließlich den in Android integrierten Browser ein und erhielt die gleiche Antwort von meinem Webserver sowie von Google.com (während der Computer selbst in Ordnung war). Ich habe den Android-Emulator abgebrochen und neu gestartet. Beim ersten Versuch gearbeitet. 

Nach der Überprüfung des Codes kann es sich lohnen, den Emulator neu zu starten. Bei aller Fairness gegenüber dem Emulator stürzten kurz danach eine Reihe von Programmen ab, so dass möglicherweise etwas anderes in meinem Computer vor sich ging. Trotzdem verschwendete ich eine Menge Zeit für mich, so dass dies jemandem die Kopfschmerzen ersparen würde, die ich durchgemacht habe. 

Viel Glück! 

51
Frank V

Stellen Sie sicher, dass Sie eine Internetverbindung haben. Das ist mir passiert, als ich vergessen habe, dass ich mit einem Mobiltelefon ohne Internetverbindung teste.

33
igo

Sie wissen, was für mich gelöst wurde, war, die Erlaubnis unmittelbar vor dem schließenden Manifest-Tag zu setzen, wie folgt:

<uses-permission Android:name="Android.permission.INTERNET" />
</manifest>
17
Moritz

Es kommt manchmal vor, wenn Sie eine App im Emulator ausführen. Starten Sie einfach den Emulator neu, um das Problem zu lösen. Es hat für mich funktioniert!

8
java dev

Wenn keine der oben genannten Maßnahmen erfolgreich war, sollten Sie einen Schritt zurücktreten und sicherstellen, dass Ihr Gerät oder Emulator durch das Öffnen eines Browsers tatsächlich das Internet erreichen kann.

5
diadyne

Ich bin auf dieselbe Ausgabe gestoßen. Ich habe die richtigen Berechtigungen in meiner Android-Manifest-Datei und auch die URL ist korrekt. Ich erhalte die Antwort im Webbrowser. Ich habe die IDE (Emulator) neu gestartet, das Problem jedoch nicht behoben. Also habe ich die AVD mit dem AVD Manager gelöscht und den Emulator gestartet und es fing an zu arbeiten.

2
Vijay

Eine letzte Prüfung wäre, dass Ihr Domainname eine gültige Domain ist. Ein Unterstrich in einer Domäne ist ungültig und löst eine unbekannte Host-Ausnahme aus.

2
tlunter

Ich hatte ein ähnliches Problem, als ich eine App testete, deren minSdkVersion auf 4 eingestellt war. Das Ändern auf 3 löste das Problem für mich.

2
metric152

Noch etwas: Es stellte sich heraus, dass das Internet für mich nicht funktionierte. Das Starten des Emulators von der Befehlszeile aus mit diesen Schaltern korrigierte es für mich: emulator -avd your_avd_name -dns-server 8.8.8.8

Ich habe diesen Fehler gesehen, als ich mit dem WLAN verbunden war. Sobald ich das WLAN ausgeschaltet hatte, funktionierte es. UnknownHostException könnte aufgrund dieses Android-Fehlers sehr wahrscheinlich ausgelöst werden:

http://code.google.com/p/Android/issues/detail?id=67324

0
l33t

Wenn Sie ein VPN öffnen, kann "Unbekannte Host-Ausnahme" das Ergebnis sein

0
Francis Shi

Ich bin bei der Verwendung des Emulators auf dasselbe Problem gestoßen, weil ich das WLAN auf meinem Laptop gewechselt habe. Das Neustarten des WLANs des Emulators hat mein Problem gelöst.

0
Sana

Überprüfen Sie dies auch, wenn Sie den Emulator nicht verwenden

Ich habe heute dasselbe Problem, ich benutze keinen Emulator, aber das USB-Debugging in mobilen Geräten zum Testen.

Ich habe keine Daten auf meinem Handy aktiviert, also bekam ich UnknownHostException. Sobald ich sie einschaltete, wurden die Daten aufgelöst.

0
Saravana