私は本当に解決できないような私のアプリケーションでこの非常に大きなバグを持っています。私は、次のコードを経由して、残りの呼び出し作るたび:HttpClient executeはConnectTimeoutExceptionを与え続けます
07-15 11:22:47.448: WARN/System.err(973): org.apache.http.conn.ConnectTimeoutException: Connect to (some ip-address) timed out
をしかし、時にはコードは完璧に動作し、それが必要として、私は私のデータを受け取る:
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);
を私はDDMSでエラーが発生します。私はまた、私のコンピュータ上の通常のウェブブラウザーを介して残りのサーバー呼び出しをテストし、それは常に100ms以内に私のデータを返す。だから私は何が間違っているの?私も別のデバイスでそれをテストしましたが、それは私に同じ問題をもたらします。私は誰かが私の問題を解決できるかどうか嬉しいです:)
のThおそらく遅いネットワーク(あなたはWi-Fiや3Gを使用していますか?)と関係があります。エミュレータで実行してみてください。接続タイムアウトを増やし、再試行の仕組みを設定する必要があるかもしれません。 – kgiannakakis
ええ、私の他のアプリでは、私はいつも要求されたデータを得ることができます。そして、私はWiFiを使用している携帯電話の1つで、それは私に例外を与えます。そして、私が知る限り、httpclientには自動再試行メカニズムがありますか? – Martijn538
タイムアウトを20〜30秒に増やします。時には、回線がビジーでタイムアウトになる可能性があります。 –