Ich habe die folgende Funktion zum Überprüfen des Verbindungsstatus erstellt:
private void checkConnectionStatus() {
HttpClient httpClient = new DefaultHttpClient();
try {
String url = "http://xxx.xxx.xxx.xxx:8000/GaitLink/"
+ strSessionString + "/ConnectionStatus";
Log.d("phobos", "performing get " + url);
HttpGet method = new HttpGet(new URI(url));
HttpResponse response = httpClient.execute(method);
if (response != null) {
String result = getResponse(response.getEntity());
...
Wenn ich den Server zum Testen herunterfahre, wartet die Ausführung lange in der Leitung
HttpResponse response = httpClient.execute(method);
Weiß jemand, wie man das Timeout einstellt, um nicht zu lange zu warten?
Vielen Dank!
java
android
timeout
httpresponse
Niko Gamulin
quelle
quelle
So legen Sie Einstellungen auf dem Client fest:
Ich habe dies erfolgreich auf JellyBean verwendet, sollte aber auch für ältere Plattformen funktionieren ....
HTH
quelle
Wenn Sie die http-Client-Bibliothek von Jakarta verwenden, können Sie Folgendes tun:
quelle
Wenn Sie den Standard-http-Client verwenden, gehen Sie wie folgt vor, indem Sie die Standard-http-Parameter verwenden:
Das ursprüngliche Guthaben geht an http://www.jayway.com/2009/03/17/configuring-timeout-with-apache-httpclient-40/
quelle
Wenn Sie sagen, dass die Antwort von @ kuester2000 nicht funktioniert, beachten Sie bitte, dass HTTP-Anforderungen zuerst versuchen, die Host-IP mit einer DNS-Anforderung zu finden, und dann die eigentliche HTTP-Anforderung an den Server senden, sodass Sie möglicherweise auch eine festlegen müssen Zeitüberschreitung für die DNS-Anforderung.
Wenn Ihr Code ohne das Zeitlimit für die DNS-Anforderung funktioniert hat, liegt dies daran, dass Sie einen DNS-Server erreichen können oder den Android-DNS-Cache erreichen. Übrigens können Sie diesen Cache löschen, indem Sie das Gerät neu starten.
Dieser Code erweitert die ursprüngliche Antwort um eine manuelle DNS-Suche mit einem benutzerdefinierten Zeitlimit:
Verwendete Methode:
Diese Klasse stammt aus diesem Blogbeitrag . Überprüfen Sie die Anmerkungen, ob Sie sie verwenden werden.
quelle
quelle
Sie können HttpClient-Instanz übrigens mit Httpclient-android-4.3.5 erstellen, es kann gut funktionieren.
quelle
Eine Option ist die Verwendung des OkHttp- Clients von Square.
Fügen Sie die Bibliotheksabhängigkeit hinzu
Fügen Sie im build.gradle die folgende Zeile ein:
Wo
x.x.x
ist die gewünschte Bibliotheksversion?Stellen Sie den Client ein
Wenn Sie beispielsweise eine Zeitüberschreitung von 60 Sekunden festlegen möchten, gehen Sie folgendermaßen vor:
ps: Wenn Ihre minSdkVersion größer als 8 ist, können Sie verwenden
TimeUnit.MINUTES
. Sie können also einfach Folgendes verwenden:Weitere Informationen zu den Einheiten finden Sie unter TimeUnit .
quelle
Wenn Sie das verwenden
HttpURLConnection
, rufen SiesetConnectTimeout()
wie hier beschrieben an :quelle
quelle