httpclient 版本升级造成报错



最近在项目中由于VISA 接口升级影响, SA 将 httpclient 版本从3.1 升级到4.3.3 ,但在依赖的子项目中开发过程中虽然能起起来,但是调用其他 API却报错:


但是其他项目组使用4.3.3 很久都没出现问题,我们将问题定位接口异常或者版本升级异常.但在测试时发现接口在回归3.1版本时一切正常,所以我们将问题定位到升级出现了问题,最后排查的出的结果是4.3.3参数变更导致的:


3.1的默认参数:

	static{
		 defaultRequestConfig = RequestConfig.custom().setCookieSpec(<u>CookieSpecs.STANDARD_STRICT</u>).build();
		//设置默认的配置
		httpClient= HttpClients.custom().setDefaultRequestConfig(defaultRequestConfig).build();
		
	}


4.3.3的参数:

	static{
		 defaultRequestConfig = RequestConfig.custom().setCookieSpec(<u>CookieSpecs.STANDARD</u>).build();
		//设置默认的配置
		httpClient= HttpClients.custom().setDefaultRequestConfig(defaultRequestConfig).build();
		
	}

结论: 3.1中的 CookieSpecs.STANDARD_STRICT 在4.3.3中直接取消,由 CookieSpecs.STANDARD 取代,所以原先调用方法只能重新封装一个工具类来调用解决.








  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
// JBuilder API Decompiler stub source generated from class file // 2010-1-15 // -- implementation of methods is not available package org.apache.commons.httpclient; // Imports import java.io.IOException; import org.apache.commons.httpclient.params.HttpClientParams; import org.apache.commons.logging.Log; public class HttpClient { // Fields private static final Log LOG; private HttpConnectionManager httpConnectionManager; private HttpState state; private HttpClientParams params; private HostConfiguration hostConfiguration; // Constructors public HttpClient() { } public HttpClient(HttpClientParams params) { } public HttpClient(HttpClientParams params, HttpConnectionManager httpConnectionManager) { } public HttpClient(HttpConnectionManager httpConnectionManager) { } // Methods public synchronized HttpState getState() { return null;} public synchronized void setState(HttpState state) { } public synchronized void setStrictMode(boolean strictMode) { } public synchronized boolean isStrictMode() { return false;} public synchronized void setTimeout(int newTimeoutInMilliseconds) { } public synchronized void setHttpConnectionFactoryTimeout(long timeout) { } public synchronized void setConnectionTimeout(int newTimeoutInMilliseconds) { } public int executeMethod(HttpMethod method) throws IOException, HttpException { return 0;} public int executeMethod(HostConfiguration hostConfiguration, HttpMethod method) throws IOException, HttpException { return 0;} public int executeMethod(HostConfiguration hostconfig, HttpMethod method, HttpState state) throws IOException, HttpException { return 0;} public String getHost() { return null;} public int getPort() { return 0;} public synchronized HostConfiguration getHostConfiguration() { return null;} public synchronized void setHostConfiguration(HostConfiguration hostConfiguration) { } public synchronized HttpConnectionManager getHttpConnectionManager() { return null;} public synchronized void setHttpConnectionManager(HttpConnectionManager httpConnectionManager) { } public HttpClientParams getParams() { return null;} public void setParams(HttpClientParams params) { } }
根据提供的引用内容,可以得知在`HttpClient client = new HttpClient()`这行代码中,`HttpClient`是一个类的实例化对象,但是没有提供类的具体信息,所以很可能是缺少了相关的依赖库。 根据引用,正确的实例化`HttpClient`的方式应该是`HttpClient client = HttpClients.createDefault()`,这里使用了`HttpClients`类中的静态方法`createDefault()`来获取一个默认的`HttpClient`实例。 因此,如果在你的代码中出现`HttpClient client = new HttpClient()`报错,很可能是由于缺少了相关的依赖库。 根据引用,可以看到正确的依赖库配置应该是: ``` <dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.13</version> </dependency> ``` 所以,你可以尝试添加上述的依赖库到你的项目中,然后再次编译和运行代码,这样就能够正确地实例化`HttpClient`对象了。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [HttpClient client = new HttpClient()的依赖](https://blog.csdn.net/myme95/article/details/91948325)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *2* [SpringBoot使用httpclient发送Post请求时](https://download.csdn.net/download/weixin_44565273/87772631)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] - *3* [HttpClient httpClient = new HttpClient();报错](https://blog.csdn.net/qq_42662114/article/details/85329535)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_1"}}] [.reference_item style="max-width: 33.333333333333336%"] [ .reference_list ]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值