日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

java调用接口失败重试,httpclient接口测试中重试控制器设置

發布時間:2025/3/20 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java调用接口失败重试,httpclient接口测试中重试控制器设置 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

本人在使用httpclient做接口測試的過程中,之前并沒有考慮到請求失敗自動重試的情況,但有時又需要在發生某些錯誤的時候重試,比如超時,比如響應頻繁被拒絕等等,在看過官方的示例后,自己寫了一個自動重試的控制器。分享代碼,供大家參考。

下面是獲取控制器的方法:

/**

* 獲取重試控制器

*

* @return

*/

private static HttpRequestRetryHandler getHttpRequestRetryHandler() {

return new HttpRequestRetryHandler() {

public boolean retryRequest(IOException exception, int executionCount, HttpContext context) {

logger.warn("請求發生錯誤!", exception);

if (executionCount > HttpClientConstant.TRY_TIMES) return false;

if (exception instanceof NoHttpResponseException) {

logger.warn("沒有響應異常");

sleep(1);

return true;

} else if (exception instanceof ConnectTimeoutException) {

logger.warn("連接超時,重試");

sleep(5);

return true;

} else if (exception instanceof SSLHandshakeException) {

logger.warn("本地證書異常");

return false;

} else if (exception instanceof InterruptedIOException) {

logger.warn("IO中斷異常");

sleep(1);

return true;

} else if (exception instanceof UnknownHostException) {

logger.warn("找不到服務器異常");

return false;

} else if (exception instanceof SSLException) {

logger.warn("SSL異常");

return false;

} else if (exception instanceof HttpHostConnectException) {

logger.warn("主機連接異常");

return false;

} else if (exception instanceof SocketException) {

logger.warn("socket異常");

return false;

} else {

logger.warn("未記錄的請求異常:{}", exception.getClass());

}

HttpClientContext clientContext = HttpClientContext.adapt(context);

HttpRequest request = clientContext.getRequest();

// 如果請求是冪等的,則重試

if (!(request instanceof HttpEntityEnclosingRequest)) {

sleep(2);

return true;

}

return false;

}

};

}

這樣超時時間和重試次數來作為判斷接口請求失敗的依據了。下面是控制器設置方法:

/**

* 通過連接池獲取https協議請求對象

*

* 增加默認的請求控制器,和請求配置,連接控制器,取消了cookiestore,單獨解析響應set-cookie和發送請求的header,適配多用戶同時在線的情況

*

*

* @return

*/

private static CloseableHttpClient getCloseableHttpsClients() {

// 創建自定義的httpsclient對象

CloseableHttpClient client = HttpClients.custom().setConnectionManager(connManager).setRetryHandler(httpRequestRetryHandler).setDefaultRequestConfig(requestConfig).build();

// CloseableHttpClient client = HttpClients.createDefault();//非連接池創建

return client;

}

技術類文章精選

非技術文章精選

總結

以上是生活随笔為你收集整理的java调用接口失败重试,httpclient接口测试中重试控制器设置的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。