HttpClient auszuführen hält Sie geben ConnectTimeoutException
Ich haben einen sehr großen Fehler in meiner Anwendung, die ich kann nicht scheinen, um zu lösen. Wenn ich einen rest-Aufruf über den folgenden code:
HttpGet request = new HttpGet(url + getParams());
HttpParams httpParameters = new BasicHttpParams();
HttpConnectionParams.setConnectionTimeout(httpParameters, 5000);
HttpConnectionParams.setSoTimeout(httpParameters, 10000);
DefaultHttpClient httpClient = new DefaultHttpClient(httpParameters);
httpClient.execute(request);
Bekomme ich die Fehlermeldung im DDMS:
07-15 11:22:47.448: WARN/System.err(973): org.apache.http.conn.ConnectTimeoutException: Connect to (some ip-address) timed out
Aber manchmal der code funktioniert perfekt und ich bekomme meine Daten so wie es sollte. Ich habe auch getestet, den rest-server-Aufruf über einen normalen webbrowser auf meinem computer und gibt immer wieder meine Daten innerhalb von 100ms. Also, was mache ich falsch? Ich habe auch getestet auf einem anderen Gerät, aber das gibt mir das gleiche problem. Ich wäre SO froh wenn jemand mein problem lösen könnte 🙂
Dies hat wohl zu tun mit einem langsamen Netzwerk (verwenden Sie Wi-Fi oder 3G?). Versuchen Sie es im emulator. Sie müssen möglicherweise erhöhen Sie die timeout-Verbindung und die Einrichtung eines retry-Mechanismus.
Ja, aber mit meinen anderen apps, die ich bekommen kann den angeforderten Daten die ganze Zeit. Und mit einem der Handys die ich benutze WLAN, aber das gibt mir Ausnahmen. Und soweit ich weiß, wird Der httpclient hat einen automatischen retry-Mechanismus?
Erhöhen Sie den timeout auf 20-30 Sekunden. Manchmal kann die Zeile beschäftigt sein und daher der timeout.
Okay, ich erhöhte das timeout auf 20 Sekunden: HttpConnectionParams.setConnectionTimeout(httpParameters, 20000); HttpConnectionParams.setSoTimeout(httpParameters, 20000); Aber ich habe immer noch die gleiche situation, in der Daten geladen wird sehr sehr selten und meistens ist es gar nichts empfangen
Hey Martijn538 Haben, finden Sie die Lösung für Ihr Problem mit timeouts?
Ja, aber mit meinen anderen apps, die ich bekommen kann den angeforderten Daten die ganze Zeit. Und mit einem der Handys die ich benutze WLAN, aber das gibt mir Ausnahmen. Und soweit ich weiß, wird Der httpclient hat einen automatischen retry-Mechanismus?
Erhöhen Sie den timeout auf 20-30 Sekunden. Manchmal kann die Zeile beschäftigt sein und daher der timeout.
Okay, ich erhöhte das timeout auf 20 Sekunden: HttpConnectionParams.setConnectionTimeout(httpParameters, 20000); HttpConnectionParams.setSoTimeout(httpParameters, 20000); Aber ich habe immer noch die gleiche situation, in der Daten geladen wird sehr sehr selten und meistens ist es gar nichts empfangen
Hey Martijn538 Haben, finden Sie die Lösung für Ihr Problem mit timeouts?
InformationsquelleAutor Martijn538 | 2011-07-15
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das problem ist das
DefaultHttpClient
. Verwenden Sie es asynchron? Da dieDefaultHttpClient
ist nicht thread-sicher, es zu benutzen, die in einer asynchronen Umgebung, die ein problem verursachen könnten. Ich habe dieses problem vor, wenn meine Tätigkeit begann, mehrere Http-Verbindung zur gleichen Zeit und ich landete ändern, verwenden SieHttpURLConnection
. Sie können sich auf dieser Website: http://www.vogella.de/articles/AndroidNetworking/article.htmlInformationsquelleAutor Steven Xiao Xu Pen
Ich habe das gleiche Problem.
Versuchen Sie es mit der direkten IP-Adresse für Ihre Anfragen. Ich bemerkte, dass Android-DNS-lookups Verhalten sich ganz komisch manchmal. Ich suchte und fand diese : http://mailinglists.945824.n3.nabble.com/Android-and-reverse-DNS-lookup-issues-td3011461.html .
Weiß nicht, ob es relevant ist oder nicht, versuche ich noch einen workaround finden. Vielleicht hat jemand hier kann einen Blick darauf werfen und es herausfinden.
InformationsquelleAutor bmartins
Überprüfen, ob Sie in der Lage sind, mit Hilfe Ihrer Entwicklung Maschine, überprüfen Sie Auch die Ladezeiten. Es gibt eine sehr gute chance, Ihre timeouts sind viel zu klein.
Können Sie den URL zugreifen, sehen Sie Ihre dev-Maschine?
Ja, aber das problem ist: manchmal ist es dem laden gut und in der Zeit, und manchmal scheint es nicht zu laden!
InformationsquelleAutor Ravi Vyas
Hatte ein ähnliches Problem, konnte reproduziert werden, nur wenn Sie versuchen, eine Verbindung mit mehreren Geräten gleichzeitig und die Lösung war:
(c) Mein server/instance admin
Außerdem gibt es Leute, die ähnliche Probleme erleben und einige andere Lösungen für Sie gearbeitet, zum Beispiel:
InformationsquelleAutor GregoryK