HttpClient源码阅读——探索Tcp链接建立时机及http请求发送时机
首先说明一点:我阅读源码一般都不是通篇阅读,而是抓住某一个关键问题,然后一步步跟踪下去,所以阅读源码的过程中会忽略一些我不太关注的部分源码。文章的标题就是此次源码阅读的核心
InternalHttpClient
因为Httclient发起请求的入口是httpClient.execute(httpPost),所以就跟着这个入口进去首先发现的就是InternalHttpClient,里面doExecute()方法是这个类的核心

然后再进一步跟踪下去,发现HttpClient采用了责任链的设计模式,将执行器划分成了若干个执行链路
MainClientExec
因为我们的关注点是tcp链接建立的时机及http请求发送的时机,因此其他几个不相关的执行器暂时先不做分析,先来侧重了解一下MainClientExec这个执行器。

execute方法是MainClientExec执行器的核心方法,这里首先向链接池请求一个链接,刚开始我以为是在这里创建的TCP链接,然而抓包结果显示这里并没有(没有发起三次握手),断点一步步往下走,然后在establishRoute这个方法发起了三次握手

链接建立完毕后,接着一步步向下走,直到requestExecutor.execute(request, managedConn, context)执行完毕才发起了http请求,并拿到了response响应信息

原文始发于微信公众号(敲得码黛):HttpClient源码阅读——探索Tcp链接建立时机及http请求发送时机
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之家整理,本文链接:https://www.bmabk.com/index.php/post/28429.html