日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) >

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

發(fā)布時(shí)間:2025/3/20 52 豆豆
生活随笔 收集整理的這篇文章主要介紹了 java调用接口失败重试,httpclient接口测试中重试控制器设置 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

本人在使用httpclient做接口測(cè)試的過(guò)程中,之前并沒(méi)有考慮到請(qǐng)求失敗自動(dòng)重試的情況,但有時(shí)又需要在發(fā)生某些錯(cuò)誤的時(shí)候重試,比如超時(shí),比如響應(yīng)頻繁被拒絕等等,在看過(guò)官方的示例后,自己寫了一個(gè)自動(dòng)重試的控制器。分享代碼,供大家參考。

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

/**

* 獲取重試控制器

*

* @return

*/

private static HttpRequestRetryHandler getHttpRequestRetryHandler() {

return new HttpRequestRetryHandler() {

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

logger.warn("請(qǐng)求發(fā)生錯(cuò)誤!", exception);

if (executionCount > HttpClientConstant.TRY_TIMES) return false;

if (exception instanceof NoHttpResponseException) {

logger.warn("沒(méi)有響應(yīng)異常");

sleep(1);

return true;

} else if (exception instanceof ConnectTimeoutException) {

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

sleep(5);

return true;

} else if (exception instanceof SSLHandshakeException) {

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

return false;

} else if (exception instanceof InterruptedIOException) {

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

sleep(1);

return true;

} else if (exception instanceof UnknownHostException) {

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

return false;

} else if (exception instanceof SSLException) {

logger.warn("SSL異常");

return false;

} else if (exception instanceof HttpHostConnectException) {

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

return false;

} else if (exception instanceof SocketException) {

logger.warn("socket異常");

return false;

} else {

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

}

HttpClientContext clientContext = HttpClientContext.adapt(context);

HttpRequest request = clientContext.getRequest();

// 如果請(qǐng)求是冪等的,則重試

if (!(request instanceof HttpEntityEnclosingRequest)) {

sleep(2);

return true;

}

return false;

}

};

}

這樣超時(shí)時(shí)間和重試次數(shù)來(lái)作為判斷接口請(qǐng)求失敗的依據(jù)了。下面是控制器設(shè)置方法:

/**

* 通過(guò)連接池獲取https協(xié)議請(qǐng)求對(duì)象

*

* 增加默認(rèn)的請(qǐng)求控制器,和請(qǐng)求配置,連接控制器,取消了cookiestore,單獨(dú)解析響應(yīng)set-cookie和發(fā)送請(qǐng)求的header,適配多用戶同時(shí)在線的情況

*

*

* @return

*/

private static CloseableHttpClient getCloseableHttpsClients() {

// 創(chuàng)建自定義的httpsclient對(duì)象

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

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

return client;

}

技術(shù)類文章精選

非技術(shù)文章精選

總結(jié)

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

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。