网上很多HttpClient的学习源码都是3版本的,不过,既然现在HttpClient已经升级成Apache的顶级项目,自然想使用新版本。但是4版本完全是重新编写,而不能向下兼容。所以在学习调试源码时,利用的4的库,就不能直接运行3.1下的源码。
结合网上资源或自己实践,把3迁移4的一些资料收集整理于此,于己于人都会有帮助。
- jar包的变更,可以在此下载最新的jar包:http://hc.apache.org/downloads.cgi
-
把org.apache.commons.httpclient.*修改到import org.apache.http.*。具体变更哪些,就要看利用了HttpClient的哪些功能
比如:
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpStatus;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.methods.GetMethod;
import org.apache.commons.httpclient.ConnectTimeoutException;
To
import org.apache.http.client.HttpClient;
import org.apache.http.HttpStatus;
import org.apache.http.HttpException;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.conn.ConnectTimeoutException;
import org.apache.http.HttpResponse;
import org.apache.http.impl.client.DefaultHttpClient;
- 使用的各个HttpClient的功能的代码修改。这部分的整理,在使用过程中慢慢补全。本次先介绍Get方法的修改。
GET方法:
HttpClient3.1的代码:
HttpClient client = new HttpClient();
GetMethod method = new GetMethod(url);
int statusCode = client.executeMethod(method);
if (statusCode == HttpStatus.SC_OK) {
InputStream is = method.getResponseBodyAsStream();
// do something with the input stream
}
method.releaseConnection();
To
HttpClient4.0的代码:
HttpClient client = new DefaultHttpClient();
HttpGet method = new HttpGet(url);
HttpResponse httpResponse = client.execute(method);
int statusCode = httpResponse.getStatusLine().getStatusCode();
if (statusCode == HttpStatus.SC_OK) {
InputStream is = httpResponse.getEntity().getContent();
// do something with the input stream
}
哪位有更完整的资料,求分享!
参考:
http://blog.teamextension.com/migrating-from-httpclient-3-1-to-4-0-34
分享到:
相关推荐
随着技术的发展,从早期的HttpClient 3.x版本迁移到更新的HttpComponents HttpClient 4.x版本是一个常见的需求。这不仅仅是一个简单的升级过程,而是涉及到对API的变化、编程模型的更新以及对网络编程的更深层次理解...
《JAVA中使用HttpClient:commons-httpclient-3.0.jar详解》 在JAVA开发中,进行HTTP请求时,Apache的...然而,随着技术的进步,开发者应关注并适时迁移到更现代的HTTP客户端解决方案,以利用最新的功能和最佳实践。
《Android SDK中的HttpClient:从遗弃到自定义》 在Android的发展历程中,HTTP客户端库HttpClient曾经是开发者们进行网络通信的重要工具。然而,随着Android SDK的不断升级,特别是从API Level 22开始,系统默认...
总结来说,Android通过HttpClient上传文件到服务器涉及以下几个关键步骤: 1. 添加HttpClient及相关库。 2. 创建HttpClient和HttpPost对象。 3. 构建MultipartEntity,包含要上传的文件信息。 4. 设置HttpPost的实体...
在使用HttpClient 4.5时,通常会将HttpClient相关的JAR文件添加到项目类路径中。提供的"HttpClientJar"可能是这个库的JAR文件,包含HttpClient的核心类和其他依赖,使得开发者可以直接在项目中引用使用。在Java代码...
3. **重试策略**:HttpClient 4.2.1支持自定义的重试策略,以应对网络波动和临时错误。`HttpRequestRetryHandler`接口允许开发人员决定何时重新尝试失败的请求。 4. **身份验证**:在4.2.1版本中,HttpClient增强了...
3. **测试**:完成以上步骤后,你需要在Android 9.0设备或模拟器上运行应用,确保HttpClient可以正常工作,没有崩溃或错误。 尽管引入第三方jar包可以解决兼容性问题,但这种方式并不总是最佳实践。使用...
在Java11中,HttpClient模块从jdk.incubator.httpclient迁移到java.net.http模块,包名由jdk.incubator.http改为java.net.http。同时,原来的诸如HttpResponse.BodyHandler.asString()方法变更为HttpResponse....
2. **从HttpClient到OkHttp的迁移** - **请求构建**:HttpClient的`HttpGet`和`HttpPost`被OkHttp的`Request`类取代。创建`Request`时,你需要指定URL和请求方法。 - **执行请求**:HttpClient的`execute()`方法...
标题中的".NET Core 迁移躺坑记续集之Win下莫名其妙的超时"描述了一个开发者在将应用程序从.NET Framework迁移到.NET Core时遇到的特定问题,即在Windows环境下出现的不可预测的HTTP请求超时。这个问题主要发生在两...
OSS.Http项目对于.Net ... 重构的思路, 3. 容易遇到的问题。 一. httpclient的基本介绍 HttpClient应该是在.net framework4.5版本左右引用的新功能,在此之前常用的是HttpWebRequest,相比较而言,前者更加的简单
SoapHttpClient HttpClient轻量级包装... 将测试项目迁移到.net核心应用。 修复了未发送SOAPAction的错误。 2.1.0 更新到NetStandardLibrary 2.0 修复了扩展方法递归调用自己的错误 2.0.0 主要重构到代码库。
在上一集的迁移故事中,开发者遇到了多个问题,并尝试了多种解决方案,其中包括使用HttpClientFactory来解决HttpClient的已知问题。然而,即使采取了这些措施,部署到生产环境后,仍然出现了超时的情况,主要集中在...
从3.x迁移到4.x通常涉及重新组织代码,以利用新版本提供的高级特性。 总结,HTTPComponents项目为Java开发者提供了强大的HTTP工具箱,无论是处理简单的HTTP请求还是构建复杂的网络应用,都能找到相应的解决方案。...
- **代码迁移**:如果你的应用程序已经大量使用了HttpClient,迁移工作可能会比较复杂。你需要检查所有相关代码,确保在引入`org.apache.http.legacy.jar`后,所有HTTP请求仍能正常工作。 - **依赖管理**:在Gradle...
4. **理解差异**:`HttpURLConnection`相比Apache HttpClient有其优势,比如更好的内存管理和更低的功耗。不过,它的API相对更底层,使用起来可能不如Apache HttpClient直观。在迁移时,需要关注连接池、重试策略和...
4. **数据源处理**:解析后的JSON数据可以被映射到PowerBuilder的数据窗口(DataWindow)、全局变量、记录集等数据源。这通常涉及到创建新的数据结构,或者使用现有的数据源,将JSON对象的键值对对应到数据结构的...
4. 在需要的时候,可以使用同样的插件将数据从COS恢复到Elasticsearch。 这个过程需要对Elasticsearch的管理和配置、腾讯云COS的使用以及Java编程有一定的了解。如果在迁移过程中遇到问题,可能需要查阅Elastic...