Java实战开发之Apache HttpClient

Apache HttpClient 是一个强大的高性能的HTTP客户端库,它是Apache软件基金会Jakarta项目的一部分。HttpClient允许Java应用程序与HTTP服务器进行交互,支持执行GET、POST、PUT、DELETE等各种HTTP方法,处理cookies、HTTP状态管理、重定向、认证等复杂特性,并且可以自定义请求和响应头信息,设置超时时间,以及处理各种不同类型的HTTP实体内容。

以下是一些主要特点:

功能丰富:提供了全面的HTTP协议支持,包括HTTP/1.0、HTTP/1.1以及部分HTTP/2特性,能够处理HTTPS(SSL/TLS)连接,支持代理服务器和隧道。

连接管理:内置了高效的连接管理机制,支持多线程并发访问,可配置连接池以提高性能和资源利用率。

灵活配置:可以通过构建RequestConfig对象来配置请求参数,如连接超时、读取超时、最大重定向次数等;同时提供HttpRequestInterceptor和HttpResponseInterceptor用于在请求发送前和响应接收后添加自定义逻辑。

身份验证支持:支持多种认证方式,包括Basic、Digest、NTLM、SPNEGO (Kerberos) 等。

自动重试和恢复:通过RetryHandler可以实现对失败请求的重试策略。

内容协商:可以根据Accept头信息自动处理内容协商,获取最佳匹配的内容类型。

易于使用:提供了面向流和面向实体两种编程模型,既可以直接操作HTTP消息实体,也可以方便地读取或写入输入输出流。

Apache HttpClient的简单实用示例:

添加依赖:

XML 复制代码
<dependency>
    <groupId>org.apache.httpcomponents</groupId>
    <artifactId>httpclient</artifactId>
    <version>4.5.13</version> 
</dependency>

get请求获取:

java 复制代码
//创建HttpClient对象
        CloseableHttpClient httpClient = HttpClients.createDefault();
        // 创建HttpGet实例
        HttpGet httpGet = new HttpGet("http://httpbin.org/get");

        try {
            //获取返回结果
            CloseableHttpResponse response = httpClient.execute(httpGet);
            if(response.getCode() == 200){//200表示跑通了
                InputStream content = response.getEntity().getContent();//这是获取内容io流
                String s = EntityUtils.toString(response.getEntity());//转化为json字符串
                System.out.println(s);
            }

        } catch (IOException e) {
            e.printStackTrace();
        } catch (ParseException e) {
            throw new RuntimeException(e);
        }
相关推荐
毕设源码-朱学姐4 小时前
【开题答辩全过程】以 工厂能耗分析平台的设计与实现为例,包含答辩的问题和答案
java·vue.js
喵了meme4 小时前
C语言实战4
c语言·开发语言
码界奇点5 小时前
Python从0到100一站式学习路线图与实战指南
开发语言·python·学习·青少年编程·贴图
9ilk5 小时前
【C++】--- 特殊类设计
开发语言·c++·后端
sali-tec5 小时前
C# 基于halcon的视觉工作流-章68 深度学习-对象检测
开发语言·算法·计算机视觉·重构·c#
Spring AI学习6 小时前
Spring AI深度解析(9/50):可观测性与监控体系实战
java·人工智能·spring
java1234_小锋6 小时前
Spring IoC的实现机制是什么?
java·后端·spring
生骨大头菜7 小时前
使用python实现相似图片搜索功能,并接入springcloud
开发语言·python·spring cloud·微服务
绝不收费—免费看不了了联系我7 小时前
Fastapi的单进程响应问题 和 解决方法
开发语言·后端·python·fastapi
xqqxqxxq7 小时前
背单词软件技术笔记(V2.0扩展版)
java·笔记·python