当前位置: 首页 > 网络应用技术

HTTP客户学习注释(1)首次相遇

时间:2023-03-07 20:49:58 网络应用技术

  因为我经常称为第三次 - 方接口,所以HTTPClient是我经常使用的框架之一。在这里,我计划系统地学习。同时,它回应了“ HTTP协议学习笔记(1)”。一方面,该理论是实践。在同一时间,我已经在JDK8中呆了很长时间。我计划学习JDK新版本的功能。我注意到JDK 11还具有HTTP客户端。在本文中,我们的注意点构建了HTTP请求,发出了请求,然后解析了响应。这篇文章还改变了样式。

  我们故事的主角是肖·陈(Xiao Chen),他仍然是一名实习生。刚进入公司的第一个要求是调整第三方接口以将数据拉到指定表的常规任务。

  小陈(Xiao Chen)觉得他已经完成了这一需求,因此他去看领导者看代码。毕竟,这是一名实习生。该公司仍然必须控制代码的质量。领导者看到它后,进行了以下对话:

  领导者:小陈(Xiao Chen),基于应用程序层的HTTP协议是哪个协议?

  小陈认为我对此很熟悉,我已经回到了面试,我在三个握手和四个握手上做出了艰苦的工作,所以我回答:HTTP基于TCP。

  领导者继续问:那么,此HTTPCLIENT如何使用TCP协议?

  小陈的心脏秘密快乐,但幸运的是,我跟随公共帐户的技术少年爱情汤。”

  答:TCP/IP协议已保留在现代操作系统中。在Java中,此Apache HTTPClient主要通过调用Java来实现操作系统的TCP/IP协议,主要提供与套接字相关的类。

  当您需要使用网络通信时,最终调用操作系统。操作系统将为该过程创建一个套接字。操作系统将为这组单词(存储空间,带宽等)分配相关资源(存储空间,带宽等)

  说到哪个,我必须画一张图片以显示与互联网有关的水平:

  领导者微笑着说:然后您在循环中生成HTTPCLEINT。是否有可能,当周期数太大时,它将占用大量插入操作系统的插座资源?您如何看待创建一个近距离的HHTTPCLIENT对象?会发生什么?

  陈考虑了:是的,我在周期之外使用了它?

  领导者继续说:您是否阅读了Apache HTTPCLIENT文档?此封闭式HTTPCLCCLIENT可能是线程 - 安全吗?

  小陈突然意识到:然后我将其添加到IOC容器中,以便我们的整个系统可以使用此HTTPCLEINT来节省资源。

  领导者继续说:还有其他问题,请考虑一下。

  小陈说:我想不到。

  领导人说:沟通过程中是否可能失败?假设在某个时间,网络更加拥挤,HTTPCLIENT是否有可能失败?

  小陈考虑了一下,好像会一样,然后再次问:那我们会变得更糟吗?但是如何添加更多优雅?我目前想到的是在打电话时使用捕捉。如果捕获是异常的,则对于重新测试的数量。

  领导人笑着说:有可能吗?此Apache HTTPClient具有试验设备。您可以检查它,然后更改它以查看它?

  小陈说:好的。

  首先,小陈打开了ClosableHttpClient的源代码:

  领导者似乎说没有问题,而且这个类别似乎是安全的。

  小陈感到他们很满意,所以我写了以下代码:

  然后他打电话给领导者,问:大个子,然后再次尝试我的代码。

  领导者点了点头,说:重复一遍,一切都很好,还可以。在下一个问题的情况下,当呼叫数量太大时,此colleablehttpclient将为每个HTTPCLENT连接打开TCP连接吗?如果是这样,它是否有点奢侈,您不应查看源代码。

  小陈考虑了:它是http1.1的野性吗?

  领导笑了:是的,实际上有一个问题。如果请求接口,请请求该请求四到五千次,那么循环是否有时间?

  小陈突然意识到:在这里,我将打开一个线池做到这一点。httpclient是一个连接池,可以像数据库连接池一样重复使用它吗?

  领导点点了点头,说:然后您可以更改它。

  因此,小陈来到Apache HTTPClient的官方网站:

  在这里看到长时间的连接问题是一个解决方案。然后,连接池,上帝会让我写一个连接池。小陈想要在apache httpclient中,必须有,所以肯定有一个文件:

  然后,最终程序被更改为以下方式:

  关于多个请求,小陈打算制作一个线程池来处理该请求,因此该程序最终成为以下内容:

  因此,小陈再次找到了领导者,并要求他再次审查他的代码。领导者看着它并点了点头:好的,几乎没有通过,完成了这项任务,然后您可以理解JDK 11中的HTTPCLIENT。LET这次对JDK 11中的新HTTPCLEINT有了一般的了解。它基本上会使用它。主要目的是让您查看不同的HTTPCLIENT的实现。

  小陈由领导层分配。首先,在Baidu上搜索JDK,Open JDK将具有JDK 11的新功能:

  以下是JDK 11的此功能的描述

  现有的API及其实施有许多私有:

  现有的httpurlconnection API中有很多问题:

  阅读了此解释后,我内心的第一个想法是,我如何使用JDK 11的HTTPCLEINT。

  JDK 11介绍了新的httpclient:

  熟悉的建筑商模式。

  该新实施的HTTP客户端是在Java 11中引入的,可以用作网络中的请求HTTP资源,支持HTTP1.1,HTTP/2,同步和异步模式。处理请求和响应流支持响应响应模式也可以构建熟悉的方式。

  以上不是说支持HTTP/1.1和HTTP/2的支持,那么我应该如何使用,如何添加请求参数?

  HTTP请求的构建主要使用httprequest.newbuilder()构建,而新建筑器最终指向httprequestbuilderimpl。让我们看看哪些参数可以帮助我们构建httprequilderimpl:

  在这里查看Xiao Chen,为什么当httpclient的httpclient没有apache httpclient的施工请求?我没有找到paramspushlisher的操作,但是我们似乎需要在URL上缝制自己的httpClclient。我们与Bodypublishers建造:

  发送发布请求:

  我还没有找到HTTPCLIENT的HTTPCLCCLIENT HTTPCLCCLIENT是如何由此处管理的。有人还在JDK的默认策略上问了这个问题。在某些情况下,在这里找不到。重复仍然非常重要。如果您使用JDK 11携带包装,则需要自己打包。

  本文基本上介绍了Apache HTTPCLIENT和JDK 11的HTTPCLIENT中的基本用途。目前,Apache HTTPClient的完整性似乎更高,但JDK 11的实现也具有亮点。

  原始:https://juejin.cn/post/71001741238919495755

最新推荐
猜你喜欢