学习链接
okhttp github
okhttp官方使用文档
SpringBoot 整合okHttp okhttp3用法
Java中常用的HTTP客户端库:OkHttp和HttpClient(包含请求示例代码)
深入浅出 OkHttp 源码解析及应用实践
httpcomponents-client github
apache httpclient文档
apache httpclient文档详细使用
【Java基础】- HttpURLConnection详解
java使用httpclient 、HttpURLConnection 发送第三方请求 使用详解、总结。HttpClient 的使用
Java 中的 HTTP 客户端库OkHttp、Apache HttpClient和HttpUrlConnection
Apache HttpClient
HttpComponents概述
HttpCore是一组低级HTTP传输组件,可用于以最小的占用空间构建自定义客户端和服务器端HTTP服务。HttpCore支持两种输入/输出模型:基于经典Java输入/输出的阻塞输入/输出模型
和基于JavaNIO的非阻塞、事件驱动输入/输出模型
。
特点
- 基于标准,纯Java,HTTP版本1.0和1.1的实现
- 在可扩展的OO框架中完全实现所有HTTP方法(GET、POST、PUT、DELETE、HEAD、OPTIONS和TRACE)。
- 支持安全超文本传输协议(HTTP over SSL)加密。
- 通过HTTP代理的透明连接。
- 隧道安全超文本传输协议连接通过HTTP代理,通过CONNECT方法。
- 基本,摘要,NTLMv1,NTLMv2,NTLM2会话,SNPNEGO,Kerberos协议鉴权方案。
- 自定义鉴权方案的插件机制。
- 可插拔安全插座工厂,更易于使用第三方解决方案
- 支持在多线程应用程序中使用的连接管理。支持设置最大总连接数以及每个主机的最大连接数。检测并关闭过时的连接。
- 自动Cookie处理读取Set-Cookie:从服务器的标头,并在适当的时候将它们发送回Cookie表头。
- 自定义cookie策略的插件机制。
- 请求输出流以避免通过直接流式传输到套接字到服务器来缓冲任何内容体。
- 响应输入流通过直接从套接字流式传输到服务器来有效地读取响应正文。
- 在HTTP/1.0中使用KeepAlive和在HTTP/1.1中使用持久连接
- 直接访问服务器发送的响应代码和标头。
- 设置连接超时的能力。
- 支持HTTP/1.1响应缓存。
- 源代码在Apache许可下免费提供。
httpcomponents-client
项目代码
apache httpcomponents-client - github,项目有4.5.x和5.4.x分支。稳定版建议使用4.5.14。
文档资料
0、HTTP编程入门
https://hc.apache.org/httpcomponents-client-4.5.x/primer.html
1、快速入门httpclient
https://hc.apache.org/httpcomponents-client-4.5.x/quickstart.html
2、使用教程
https://hc.apache.org/httpcomponents-client-4.5.x/current/tutorial/html/
3、代码示例
https://github.com/apache/httpcomponents-client/tree/4.5.x/httpclient/src/examples/org/apache/http/examples/client - 这里面包括丰富的示例,覆盖一些更复杂使用场景
4、日志说明
https://hc.apache.org/httpcomponents-client-4.5.x/logging.html
HttpClient利用Commons Logging包提供的日志接口。默认情况下Commons Logging支持以下日志记录框架:
-
Log4J 2
-
java.util.logging
-
SimpleLog(Commons Logging内部)
HttpClient执行三种不同类型的日志记录:每个类中使用的标准上下文日志记录、HTTP表头日志记录和全线日志记录。
- 上下文日志记录包含有关HttpClient
执行HTTP请求时的内部操作的信息
。每个类都有自己的日志,根据类的完全限定名称命名。例如,类DefaultHttpClient有一个名为org.apache.http.impl.client.DefaultHttpClient的日志。由于所有类都遵循此约定,因此可以使用名为org.apache.http.impl.client的单个日志为所有类配置上下文日志 - 连线日志用于记录执行HTTP请求时与服务器之间传输的所有数据。
连线日志使用org.apache.http.wire日志类别
。该日志应该只启用调试问题,因为它会产生极其大量的日志数据
。 - 因为HTTP请求的内容对于调试来说通常不如HTTP标头重要,所以org.apache.http.headers日志记录类别仅用于捕获HTTP标头。