httpClientリクエストタイムアウトの設定と処理
2234 ワード
タイムアウトの原因を設定
私たちのhttpClientリクエストでは、リクエストアドレスが間違っているか、通常の時間内に接続できず、フィードバックが得られないか、サーバがメンテナンスを停止している状態です.
この場合、httpClientリクエストを送信するクライアントは、スレッド内でリクエストのフィードバック情報を待っているため、プロセスがブロックされます.この場合、クライアントが反応しない(アンドロイドシステムでは携帯電話のアプリケーションがクラッシュする)場合は、httpClientを要求するタイムアウト時間を設定してこのトラブルを解決する必要があります.
私たちのhttpClientリクエストクラスでhttpClientリクエストを行う変数を生命します.
我々のgetメソッドでは(本稿ではgetリクエストを例に)我々のリクエストオブジェクトを設定する
このとき、私たちのリクエストが6秒以上読み込まれた場合、私たちのhttpClientリクエストはConnectTimeoutExceptionという異常を報告します.
この場合、リクエストコードで例外をキャプチャする必要があります.例:
「接続時間アウト」という文字列
この場合、httpClientリクエストを呼び出した場所で、戻り情報が「connection time out」であるかどうかを判断する必要があります.
もしそうであれば、私たちのリクエストがタイムアウトしたことを証明します.このとき、アンドロイドappがtoastを呼び出して携帯電話に「リクエストがタイムアウトした」と表示できるように、対応するタイムアウト処理を行うことができます.
私たちのhttpClientリクエストでは、リクエストアドレスが間違っているか、通常の時間内に接続できず、フィードバックが得られないか、サーバがメンテナンスを停止している状態です.
この場合、httpClientリクエストを送信するクライアントは、スレッド内でリクエストのフィードバック情報を待っているため、プロセスがブロックされます.この場合、クライアントが反応しない(アンドロイドシステムでは携帯電話のアプリケーションがクラッシュする)場合は、httpClientを要求するタイムアウト時間を設定してこのトラブルを解決する必要があります.
私たちのhttpClientリクエストクラスでhttpClientリクエストを行う変数を生命します.
HttpClient httpClient = new DefaultHttpClient();
我々のgetメソッドでは(本稿ではgetリクエストを例に)我々のリクエストオブジェクトを設定する
// (6 )
httpClient.getParams().setParameter(CoreConnectionPNames.CONNECTION_TIMEOUT, 6000);
// (6 )
httpClient.getParams().setParameter(CoreConnectionPNames.SO_TIMEOUT, 6000);
このとき、私たちのリクエストが6秒以上読み込まれた場合、私たちのhttpClientリクエストはConnectTimeoutExceptionという異常を報告します.
この場合、リクエストコードで例外をキャプチャする必要があります.例:
try{
// HttpGet 。
HttpGet get = new HttpGet(urlAddress);
System.out.println(urlAddress+"============");
// GET
HttpResponse httpResponse = httpClient.execute(get);
//
if (httpResponse.getStatusLine()
.getStatusCode() == HttpStatus.SC_OK)
{
//
String result = EntityUtils.toString(httpResponse.getEntity());
return result;
}
else {
// "error"
return "error";
}
}catch(ConnectTimeoutException e){
//
e.printStackTrace();
return "connection time out";
}finally{
// HttpClient
httpClient.getConnectionManager().shutdown();
}
私のリクエストがタイムアウトしたとき、私のリクエストクラスはこの例外をキャプチャし、返します.「接続時間アウト」という文字列
この場合、httpClientリクエストを呼び出した場所で、戻り情報が「connection time out」であるかどうかを判断する必要があります.
もしそうであれば、私たちのリクエストがタイムアウトしたことを証明します.このとき、アンドロイドappがtoastを呼び出して携帯電話に「リクエストがタイムアウトした」と表示できるように、対応するタイムアウト処理を行うことができます.