如果連接或套接字超時,我使用HttpClient
和HttpRequestRetryHandler
重試。因此,我關閉了連接並調用預計要調用HttpRequestRetryHandler
的API。但它沒有被調用。甚至沒有輸入該方法。HttpRequestRetryHandler未被調用
代碼:
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
如下圖所示,和執行確實進入了catch塊爲ConnectTimeoutException
。
try {
// Making API request
} catch (ConnectTimeoutException ce) {
// Execution enters here
ce.printStackTrace();
}
我的avd在android版本果凍bean上運行。
代碼有什麼問題嗎?打印ConnectTimeoutException跟蹤時
logcat的:
我想使用自定義的處理器,這樣我可以決定再試一次,或不爲任何異常。 – Geek