Ich verwende Android SDK 2.2 und teste meine Anwendung mit dem Emulator. Ich möchte einen HTTP-Beitrag senden. Wenn ich das tue, bekomme ich eine UnknownHostException. Ich habe die erforderlichen Berechtigungen
<uses-permission android:name="android.permission.INTERNET" /
> platziert
in die Datei manifest.xml eingefügt. 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 );
}
android
http
post
android-emulator
anisbet
quelle
quelle
} catch(Exception e) { System.out.println("Error:"+e); } catch (ClientProtocolException e) { Log.e( "HttpManager", "ClientProtocolException thrown" + e ); } catch (IOException e) { Log.e( "HttpManager", "IOException thrown" + e ); }
Dies zeigt den Fehler als bereits behandelte Ausnahme an.Antworten:
Ok, ich fühle mich ziemlich lahm ... Das INTERNET-Berechtigungs-Tag ist ein Kind des Manifest-Tags, nicht des Anwendungs-Tags. Meine Güte!
quelle
Aus Rücksicht auf andere 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 überprüft und es war an der richtigen Stelle.
Ich habe schließlich den in Android integrierten Browser gestartet 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 beendet und neu gestartet. arbeitete am ersten Versuch.
Nach dem Überprüfen Ihres Codes kann es sich lohnen, den Emulator neu zu starten. Um dem Emulator gerecht zu werden, stürzten kurz darauf einige Programme ab, sodass möglicherweise etwas anderes in meinem Computer vor sich ging. Trotzdem verschwendete dies eine Menge Zeit für mich. Vielleicht erspart dies jemandem die Kopfschmerzen, die ich hatte.
Viel Glück!
quelle
Stellen Sie sicher, dass Sie eine Internetverbindung haben. Das ist mir passiert, als ich vergessen habe, dass ich mit einem Mobiltelefon ohne Internetverbindung teste.
quelle
Sie wissen, was es für mich gelöst hat, war, die Erlaubnis kurz vor das schließende Manifest-Tag zu setzen, wie folgt:
<uses-permission android:name="android.permission.INTERNET" /> </manifest>
quelle
Es passiert manchmal, wenn Sie eine App im Emulator ausführen. Starten Sie einfach den Emulator neu, um das Problem zu lösen. Es hat bei mir funktioniert!
quelle
Wenn keines der oben genannten Verfahren funktioniert hat, treten Sie einen Schritt zurück und stellen Sie sicher, dass Ihr Gerät oder Emulator tatsächlich das Internet erreichen kann, indem Sie einen Browser öffnen.
quelle
Beim Testen einer App mit einer minSdkVersion von 4 stieß ich auf ein ähnliches Problem, und ich habe versucht, sie auf einem G1 auszuführen. Das Ändern auf 3 löste das Problem für mich.
quelle
Ich bin auf dasselbe Problem gestoßen. Ich habe die richtigen Berechtigungen in meiner Android Manifest-Datei und die URL ist auch korrekt. Ich erhalte die Antwort im Webbrowser. Ich habe die IDE Emulator neu gestartet, aber das Problem nicht behoben. Also habe ich die AVD mit dem AVD Manager gelöscht und dann den Emulator gestartet und es fing an zu funktionieren.
quelle
Eine letzte Überprüfung wäre, dass Ihr Domain-Name eine gültige Domain ist. Ein Unterstrich in einer Domain ist ungültig und löst eine unbekannte Host-Ausnahme aus.
quelle
Eine andere Sache: Es stellte sich heraus, dass das Internet selbst für mich nicht funktionierte. Das Starten des Emulators über die Befehlszeile mit diesen Schaltern hat es für mich behoben:
emulator -avd your_avd_name -dns-server 8.8.8.8
quelle
Ich habe diesen Fehler gesehen, wenn ich mit WiFi verbunden war. Sobald ich WiFi ausschaltete, funktionierte es.
UnknownHostException
könnte sehr gut aufgrund dieses Android-Fehlers geworfen werden:http://code.google.com/p/android/issues/detail?id=67324
quelle
Überprüfen Sie dies auch, wenn Sie den Emulator nicht verwenden
Ich habe heute das gleiche Problem, ich verwende keinen Emulator, habe aber das USB-Debugging in Mobilgeräten zum Testen aktiviert.
Ich habe keine Daten in meinem Handy eingeschaltet, also habe ich sie erhalten
UnknownHostException
, sobald ich sie eingeschaltet habe.quelle
Wenn Sie ein VPN öffnen, kann dies zu einer "unbekannten Hostausnahme" führen
quelle
Bei der Verwendung des Emulators trat das gleiche Problem auf, da ich das WLAN auf meinem Laptop geändert habe, sodass ein Neustart des WLAN des Emulators mein Problem löste.
quelle