Mam bardzo duży błąd w mojej aplikacji, którego naprawdę nie mogę rozwiązać. Ilekroć nawiązać połączenie odpoczynku poprzez następujący kod:Wykonanie HttpClient daje ConnectTimeoutException
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);
pojawia się błąd w DDMS:
07-15 11:22:47.448: WARN/System.err(973): org.apache.http.conn.ConnectTimeoutException: Connect to (some ip-address) timed out
Ale czasami kod działa idealnie i otrzymam moje dane, jak powinien. Przetestowałem także pozostałe połączenia z serwerem za pośrednictwem normalnej przeglądarki na moim komputerze i to zawsze daje moje dane w ciągu 100 ms. Co więc robię źle? Przetestowałem go również na innym urządzeniu, ale to daje mi ten sam problem. Byłbym bardzo zadowolony, gdyby ktoś mógł rozwiązać mój problem :)
Th prawdopodobnie ma związek z wolną siecią (czy korzystasz z Wi-Fi czy 3G?). Spróbuj uruchomić go w emulatorze. Może być konieczne zwiększenie limitu czasu połączenia i skonfigurowanie mechanizmu ponawiania próby. – kgiannakakis
Tak, ale z moimi innymi aplikacjami mogę uzyskać żądane dane przez cały czas. Z jednym z telefonów korzystam z WiFi, ale ten daje mi wyjątki. I o ile mi wiadomo, httpclient ma mechanizm automatycznego powtarzania? – Martijn538
Zwiększ limit czasu do 20-30 sekund. Czasami linia może być zajęta, a tym samym limit czasu. –