如果连接或套接字超时,我使用HttpClient
and重试。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: