HttpClient源码解析系列:第四篇:Connection是怎么生成和管理的

上面介绍了HttpClientConnection是最核心的接口
这个接口的使用分布在上图所示的类或者接口中。图中可以看出,分成四个大类:Connection的不同实现,Manager,Operator,Factory。
由于这里不着重考察Connection的实现,所以略过,而考察Manager,Operator,Factory。
经过简单的代码筛查,可以发现在管理HttpClientConnection过程中,它以一个子接口:ManagedHttpClientConnection的形式存在。
这个很容易理解,HttpClientConnection的实例并不是用户new出来的,而是经由Manager管理的,所以衍生出一个Managed的接口。
此外,Operator和Factory也是经由Manager来调用的,所以可以先从 HttpClientConnectionManager 来切入代码。

接口 HttpClientConnectionManager 有两个实现

显然,BasicHttpClientConnectionManager 是最基本的可用版本。那么我们来看一下其中的代码。
从其中的参数可以看到,这里面有一个 Connection和一个Route,也就是说这个基础版的Manager只能管理一个Connection。

来看最核心的方法:getConnection, connect
synchronized HttpClientConnection getConnection( final HttpRoute route, final Object state) {
        Asserts.check(!this.isShutdown.get(), "Connection manager has been shut down");
        if (this.log.isDebugEnabled()) {
            this.log.debug("Get connection for route " + route);
        }
        Asserts.check(!this.leased, "Connection is still allocated");
        if (!LangUtils.equals(this.route, route) || !LangUtils.equals(this.state, state)) {
            closeConnection();
        }
         this.route = route; //创建链接的时候目标主机的信息是一定要的
        this.state = state;
         checkExpiry(); //校验是否存在
         if (this.conn == null) {
            this.conn = this.connFactory.create(route, this.connConfig); // 这个Manager管理唯一一个Connection,如果获取连接的时候不存在则新建一个。
        }
        this
  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
Apache HttpClient 是一个开源的、高性能的、易于使用的 HTTP 客户端库,广泛应用于 Java 应用程序中。下面简单介绍一下 HttpClient源码解析: 1. HttpClient 的主要类 HttpClient 的核心类是 CloseableHttpClientHttpClientBuilder。HttpClientBuilder 负责创建 CloseableHttpClient 实例,而 CloseableHttpClient 则封装了所有的 HTTP 请求和响应处理逻辑。 2. HttpClient 的请求发送流程 HttpClient 的请求发送流程包括以下几个步骤: - 创建 HttpClient 实例和 HttpUriRequest 实例; - 设置请求头和请求体; - 执行请求,并获取 HttpResponse 实例; - 解析响应,并将响应内容转换为所需的数据类型。 3. HttpClient 的连接管理 HttpClient 连接管理的核心是连接池,通过连接池可以提高 HTTP 请求的性能和效率。HttpClient 提供了 ConnectionReuseStrategy 接口和 ConnectionKeepAliveStrategy 接口,用于连接复用和连接保持的策略。 4. HttpClient 的认证和授权 HttpClient 提供了多种认证和授权方式,包括基本认证、摘要认证、NTLM 认证、OAuth 2.0、Bearer Token 等。 5. HttpClient 的异常处理 HttpClient 的异常处理包括两个方面:网络异常和 HTTP 异常。网络异常包括网络超时、连接中断等,HTTP 异常包括 4xx 和 5xx 状态码等。HttpClient 提供了相应的异常类和异常处理机制,方便开发者进行异常处理。 以上是 HttpClient 的简单源码解析,希望对你有所帮助。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值