1. 什么是HttpClient
1.1 定义
虽然在 JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。
1.2 基本功能
实现了所有 HTTP 的方法(GET、POST、PUT、HEAD、DELETE、HEAD、OPTIONS 等)
支持 HTTPS 协议
支持代理服务器(Nginx等)
支持自动(跳转)转向
官网 HttpClient - HttpClient Home
2. 什么是HttpClient Fluent API(流式接口)
2.1 定义
4.2版本的 HttpClient 带来了一组非常容易使用的流式 API(Fluent API) 接口。
暴露的流式API(Fluent API) 接口中仅仅是 HttpClient 最基本的一些功能,这些接口是在不需要使用
HttpClient 丰富的灵活性时,为了一些简单的功能而准备的。
2.2 Fluent API 执行 简单的HTTP 请求的示例
import org.apache.http.HttpVersion;
import org.apache.http.client.fluent.Request;
import org.apache.http.entity.ContentType;
import java.io.IOException;
public class FluentRequests {
public static void main(String[] args) throws IOException {
String str = Request.Get("https://www.baidu.com")
.connectTimeout(5000)
.socketTimeout(5000)
.execute().returnContent().asString();
System.out.println("*******************************************");
System.out.println(str);
byte[] bytes = Request.Post("https://blog.csdn.net/sulia1234567890/article/details/120509672")
.useExpectContinue()
.version(HttpVersion.HTTP_1_1)
.bodyString("important stuff", ContentType.DEFAULT_TEXT)
.execute().returnContent().asBytes();
System.out.println("*******************************************");
System.out.println(bytes);
}
}
结果输出:
*******************************************
(省略一部分打印内容)
src=//www.baidu.com/img/gs.gif>
九月 29, 2021 11:06:31 上午 org.apache.http.client.protocol.ResponseProcesscookies processcookies
警告: Invalid cookie header: "Set-cookie: uuid_tt_dd=10_20323631800-1632884791615-716543; Expires=Thu, 01 Jan 2025 00:00:00 GMT; Path=/; Domain=.csdn.net;". Invalid 'expires' attribute: Thu, 01 Jan 2025 00:00:00 GMT
九月 29, 2021 11:06:31 上午 org.apache.http.client.protocol.ResponseProcesscookies processcookies
警告: Invalid cookie header: "Set-cookie: dc_session_id=10_1632884791615.372710; Expires=Thu, 01 Jan 2025 00:00:00 GMT; Path=/; Domain=.csdn.net;". Invalid 'expires' attribute: Thu, 01 Jan 2025 00:00:00 GMT
*******************************************
[B@21a947fe
2.3 Maven的pom.xml配置文件中要引入依赖包
org.apache.httpcomponents httpclient4.5.13 org.apache.httpcomponents fluent-hc4.5.13



