網站首頁 編程語言 正文
問題:
在寫項目的時候,使用到 org.apache.commons.httpclient.HttpClient ,進行http請求,發現有時一些鏈接無法正常連接,這時候就會自動重連3次,導致一個http連接的時間過長。
解決方法:
設置連接超時時間、設置自動重連方法,防止http連接時間過長。
思路:
開始以為是沒有設置連接超時導致的,后來發現設置了超時還是會重連,于是查找到GetMethod的 setMethodRetryHandler 方法,通過這個方法來設置自己的重連函數,但是發現這個方法已經過時了,官方推薦使用 HttpMethodParams 的方式來設置重連函數。
貼代碼,示例:使用httpClient進行http連接,獲取圖片。
public static HttpClient getHttpClient() {
HttpClient client = new HttpClient();
// 設置連接超時時間
client.getHttpConnectionManager().getParams().setConnectionTimeout(3000);
return client;
}
public static BufferedImage getPicture1(Camera camera) {
GetMethod method = new GetMethod(getURL(camera.getId()));
method.setDoAuthentication(true);
// 連接失敗后,禁止重連
method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
(HttpMethodRetryHandler) (method1, exception, executionCount) -> false);
try {
int statusCode = getHttpClient().executeMethod(method);
try (InputStream in = method.getResponseBodyAsStream()) {
return ImageIO.read(in);
}
} catch (IOException e) {
return null;
} finally {
method.releaseConnection();
}
}
這里我直接返回false,相當于關閉了重連,如果需要自定義重連次數,則需要這樣寫:
// 設置重連次數為10次
method.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
new DefaultHttpMethodRetryHandler(10,false));
原文鏈接:https://blog.csdn.net/weixin_40816738/article/details/125918509
相關推薦
- 2022-07-02 SpringBoot-?@SessionAttributes--使用/實例
- 2023-04-01 Python之維度dim的定義及其理解使用方式_python
- 2023-10-31 WebSocket消息推送
- 2022-07-03 C#并行編程之PLINQ(并行LINQ)_C#教程
- 2023-03-15 pandas中fillna()函數填充NaN和None的實現_python
- 2022-04-25 C#中使用DevExpress中的ChartControl實現極坐標圖的案例詳解_C#教程
- 2024-04-07 MyBatis批量插入的五種方式(推薦MyBatis以集合方式批量新增)
- 2021-12-04 Flutter實現頁面路由及404路由攔截_Android
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支