私は、ApacheからHttpClientを頻繁に使用する長時間実行するアプリケーションを開発しています。HttpClientが例外なくスタックされています
私の最初のテストでは、アプリケーションはちょうど立ち往生するまで完全に動作しました。それは停止されなかった、それは何も例外をスローしなかった、それはただ何もしないで座っている。
私は今すぐ2回目の走行をして時間を止め、約1時間後に停止しました。 24時間のコンティニュアントランニング。また、私はそれを実行していた私のラップトップのインターネット接続が、アプリケーションが立ち往生した正確な時点で終了していることに気づいた。私はWLANアダプタを再起動して、ネットが再び動作するようにしなければならなかった。
接続が再開しても、アプリケーションは正常に動作しませんでした。そして今、もう一度立ち往生した。
私はHttpClientで認識していないタイムアウトコントローラはありますか?接続が切断されたときにアプリケーションが例外をスローしないのはなぜですか?
クライアントを使用する部分は次のようになります。
public HttpUtil(ConfigUtil config) {
this.config = config;
client = new DefaultHttpClient();
client.getParams().setParameter(HttpProtocolParams.USER_AGENT, this.config.getProperty("httputil.userAgent"));
}
public String getContentAsString(String url) throws ParseException, ClientProtocolException, IOException {
return EntityUtils.toString(
client.execute(
new HttpGet(url)).getEntity());
}
アプリケーションでは、必要なURLに繰り返しhttputil.getContentAsString()
が呼び出されます。
エンティティが空の文字列である可能性があります。 – kasavbere
私のメソッドはまだ空の文字列を返すでしょうか?または、少なくとも例外をスローしますか? –
私は同じ問題があります。 httpEntity.consumeContent()は私を保存します。 http://stackoverflow.com/questions/9505358/android-httpclient-hangs-on-second-request-to-the-server-connection-timed-out – JamesC