`
hugh.wangp
  • 浏览: 292992 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

【学习】从HttpClient3迁移到HttpClient4

    博客分类:
  • JAVA
阅读更多

网上很多HttpClient的学习源码都是3版本的,不过,既然现在HttpClient已经升级成Apache的顶级项目,自然想使用新版本。但是4版本完全是重新编写,而不能向下兼容。所以在学习调试源码时,利用的4的库,就不能直接运行3.1下的源码。


结合网上资源或自己实践,把3迁移4的一些资料收集整理于此,于己于人都会有帮助。
  1. jar包的变更,可以在此下载最新的jar包:http://hc.apache.org/downloads.cgi
  2. 把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;
      
  3. 使用的各个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 to HttpComponents HttpClient 4.x

    随着技术的发展,从早期的HttpClient 3.x版本迁移到更新的HttpComponents HttpClient 4.x版本是一个常见的需求。这不仅仅是一个简单的升级过程,而是涉及到对API的变化、编程模型的更新以及对网络编程的更深层次理解...

    commons-httpclient-3.0.jar JAVA中使用HttpClient可以用到

    《JAVA中使用HttpClient:commons-httpclient-3.0.jar详解》 在JAVA开发中,进行HTTP请求时,Apache的...然而,随着技术的进步,开发者应关注并适时迁移到更现代的HTTP客户端解决方案,以利用最新的功能和最佳实践。

    httpclient-4.2.5.jar

    《Android SDK中的HttpClient:从遗弃到自定义》 在Android的发展历程中,HTTP客户端库HttpClient曾经是开发者们进行网络通信的重要工具。然而,随着Android SDK的不断升级,特别是从API Level 22开始,系统默认...

    Android使用HttpClient上传文件到服务器完整实例

    总结来说,Android通过HttpClient上传文件到服务器涉及以下几个关键步骤: 1. 添加HttpClient及相关库。 2. 创建HttpClient和HttpPost对象。 3. 构建MultipartEntity,包含要上传的文件信息。 4. 设置HttpPost的实体...

    HttpClient4.5

    在使用HttpClient 4.5时,通常会将HttpClient相关的JAR文件添加到项目类路径中。提供的"HttpClientJar"可能是这个库的JAR文件,包含HttpClient的核心类和其他依赖,使得开发者可以直接在项目中引用使用。在Java代码...

    HttpClient 4.2.1版本

    3. **重试策略**:HttpClient 4.2.1支持自定义的重试策略,以应对网络波动和临时错误。`HttpRequestRetryHandler`接口允许开发人员决定何时重新尝试失败的请求。 4. **身份验证**:在4.2.1版本中,HttpClient增强了...

    解决HttpClient9.0兼容性jar包

    3. **测试**:完成以上步骤后,你需要在Android 9.0设备或模拟器上运行应用,确保HttpClient可以正常工作,没有崩溃或错误。 尽管引入第三方jar包可以解决兼容性问题,但这种方式并不总是最佳实践。使用...

    Java11新特性之HttpClient小试牛刀

    在Java11中,HttpClient模块从jdk.incubator.httpclient迁移到java.net.http模块,包名由jdk.incubator.http改为java.net.http。同时,原来的诸如HttpResponse.BodyHandler.asString()方法变更为HttpResponse....

    okhttp-3.2.0.jar和okio-1.6.0.jar,替换过期的HttpClient

    2. **从HttpClient到OkHttp的迁移** - **请求构建**:HttpClient的`HttpGet`和`HttpPost`被OkHttp的`Request`类取代。创建`Request`时,你需要指定URL和请求方法。 - **执行请求**:HttpClient的`execute()`方法...

    .NET Core 迁移躺坑记续集之Win下莫名其妙的超时

    标题中的".NET Core 迁移躺坑记续集之Win下莫名其妙的超时"描述了一个开发者在将应用程序从.NET Framework迁移到.NET Core时遇到的特定问题,即在Windows环境下出现的不可预测的HTTP请求超时。这个问题主要发生在两...

    完成OSS.Http底层HttpClient重构封装 支持标准库

    OSS.Http项目对于.Net ... 重构的思路, 3. 容易遇到的问题。 一. httpclient的基本介绍 HttpClient应该是在.net framework4.5版本左右引用的新功能,在此之前常用的是HttpWebRequest,相比较而言,前者更加的简单

    SoapHttpClient:用于发送SOAP消息的HttpClient包装器

    SoapHttpClient HttpClient轻量级包装... 将测试项目迁移到.net核心应用。 修复了未发送SOAPAction的错误。 2.1.0 更新到NetStandardLibrary 2.0 修复了扩展方法递归调用自己的错误 2.0.0 主要重构到代码库。

    【ASP.NET编程知识】.NET Core 迁移躺坑记续集之Win下莫名其妙的超时.docx

    在上一集的迁移故事中,开发者遇到了多个问题,并尝试了多种解决方案,其中包括使用HttpClientFactory来解决HttpClient的已知问题。然而,即使采取了这些措施,部署到生产环境后,仍然出现了超时的情况,主要集中在...

    httpcomponents 文档 CHM

    从3.x迁移到4.x通常涉及重新组织代码,以利用新版本提供的高级特性。 总结,HTTPComponents项目为Java开发者提供了强大的HTTP工具箱,无论是处理简单的HTTP请求还是构建复杂的网络应用,都能找到相应的解决方案。...

    安卓org.apache.http.legacy.jar包下载

    - **代码迁移**:如果你的应用程序已经大量使用了HttpClient,迁移工作可能会比较复杂。你需要检查所有相关代码,确保在引入`org.apache.http.legacy.jar`后,所有HTTP请求仍能正常工作。 - **依赖管理**:在Gradle...

    org.apache.http.legacy

    4. **理解差异**:`HttpURLConnection`相比Apache HttpClient有其优势,比如更好的内存管理和更低的功耗。不过,它的API相对更底层,使用起来可能不如Apache HttpClient直观。在迁移时,需要关注连接池、重试策略和...

    PB调用http apiPB解析json

    4. **数据源处理**:解析后的JSON数据可以被映射到PowerBuilder的数据窗口(DataWindow)、全局变量、记录集等数据源。这通常涉及到创建新的数据结构,或者使用现有的数据源,将JSON对象的键值对对应到数据结构的...

    repository-cos-6.5.4.zip

    4. 在需要的时候,可以使用同样的插件将数据从COS恢复到Elasticsearch。 这个过程需要对Elasticsearch的管理和配置、腾讯云COS的使用以及Java编程有一定的了解。如果在迁移过程中遇到问题,可能需要查阅Elastic...

Global site tag (gtag.js) - Google Analytics