接続またはソケットがタイムアウトした場合は、 andを使用HttpClient
して再試行します。HttpRequestRetryHandler
そのため、接続をオフにして、呼び出さHttpRequestRetryHandler
れることを期待して API を呼び出します。しかし、それは呼び出されません。メソッドに入ることすらありません。
コード :
HttpClient client = new DefaultHttpClient();
client.getParams().setIntParameter(
HttpConnectionParams.CONNECTION_TIMEOUT,
CONNECTION_TIMEOUT * 1000);
client.getParams().setIntParameter(HttpConnectionParams.SO_TIMEOUT,
SOCKET_TIMEOUT * 1000);
// Retry handler which handles request retry
HttpRequestRetryHandler requestRetryHandler = new HttpRequestRetryHandler() {
@Override
public boolean retryRequest(IOException exception,
int executionCount, HttpContext context) {
if ((exception instanceof ConnectTimeoutException || exception instanceof SocketTimeoutException)
&& executionCount <= MAX_TRIES) {
Log.d(TAG, "Retrying connection.");
return true;
}
return false;
}
};
((AbstractHttpClient) client)
.setHttpRequestRetryHandler(requestRetryHandler);
しかし、同時にConnectTimeoutException
、以下に示すようにキャッチしようとすると、実行は のキャッチ ブロックに入りConnectTimeoutException
ます。
try {
// Making API request
} catch (ConnectTimeoutException ce) {
// Execution enters here
ce.printStackTrace();
}
私の avd は、android バージョンのジェリービーンで動作します。
コードに何か問題がありますか?
ConnectTimeoutException トレースを出力するときの Logcat :