私のアプリケーションでは、httpを使用してサーバーに接続しています(ローカルデータベースを同期しています)。コードは次のとおりです。
HttpClient httpClient = new DefaultHttpClient();
httpClient.getParams().setParameter(CoreProtocolPNames.PROTOCOL_VERSION, HttpVersion.HTTP_1_1);
HttpConnectionParams.setConnectionTimeout(httpClient.getParams(),13500);
HttpConnectionParams.setSoTimeout(httpClient.getParams(),27000);
HttpResponse response = httpClient.execute(httpRequest);
int statusCode = response.getStatusLine().getStatusCode();
HttpEntity entity = response.getEntity();
if (entity != null) {
String data = EntityUtils.toString(entity);
JSONObject jObj = new JSONObject(data);
entity.consumeContent();
}
このコードは、サーバーからデータをプルしたり、サーバーに更新を送信したりするための多数のhttpRequestに対して実行されます。
最近まで、このコードは問題を引き起こしませんでしたが、今では奇妙な問題に苦しんでいます。コードが正常に機能する場合もありますが、タイムアウトだけが発生する場合もあります。
もう少し詳細-それが機能しないとき、それは私が散発的なタイムアウトを取得しているようではありません-私が送信するすべてのリクエストはタイムアウトで終わります。アプリを再起動してこの動作を確認できます。アプリを数回再起動すると、呪いが解かれたようになります。1回のタイムアウトではありません。そしてまた、私が得ているのはタイムアウトだけです。
IPhoneアプリも同じアプリと問題なく通信しているので、問題は電話側にあると確信しています。また、別のデバイスの同じアプリが正常に動作しているときに、1つのAndroidデバイスでこの問題を何度か観察しました。
ここで何が欠けていますか?