日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

HttpCore和HttpClient

發(fā)布時(shí)間:2024/1/8 编程问答 46 豆豆
生活随笔 收集整理的這篇文章主要介紹了 HttpCore和HttpClient 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、HttpCore

  • httpcore實(shí)現(xiàn)了一套HTTP 協(xié)議的基礎(chǔ)組件,為構(gòu)建客戶端/代理/服務(wù)器端 HTTP 服務(wù)一致的 API。
  • 支持兩種I/O模式:BIO和NIO
    • BIO:阻塞型Blocking I/O,通信模型:1:1模型:通常由一個(gè)獨(dú)立的Acceptor線程(服務(wù)器)負(fù)責(zé)監(jiān)聽客戶端的連接,它接收到客戶端連接請(qǐng)求之后為每個(gè)客戶端創(chuàng)建一個(gè)新的線程進(jìn)行鏈路處理 處理完成后,通過輸出流返回應(yīng)答給客戶端,線程銷毀。流程: Client->server->新建線程處理請(qǐng)求并返回響應(yīng)->銷毀線程
    • NIO:非阻塞型Non-Blocking I/O,通信模型:
      • 偽異步I/O模型:通過線程池管理線程。Client->server->線程池->分配線程處理請(qǐng)求并返回響應(yīng)->線程池回收線程。
      • NIO模型:這里的N是new縮寫,buffer緩沖區(qū)緩存數(shù)據(jù)減少等待時(shí)間,channel通道讀取緩存區(qū)數(shù)據(jù)或向緩沖區(qū)寫入數(shù)據(jù)配合buffer使用,selector多路復(fù)用器監(jiān)聽注冊(cè)在其上的channel,收到channel上讀或?qū)懯录畔?#xff0c;輪詢channel,然后通過selectkey調(diào)用channel執(zhí)行任務(wù)。
      • AIO模型:通過監(jiān)聽和異步通道(異步文件通道和異步套接字通道)實(shí)現(xiàn)異步讀寫,減少了selector對(duì)通道的輪詢,是一個(gè)事件驅(qū)動(dòng)模型。
  • 項(xiàng)目結(jié)構(gòu)

?

一、HttpRequst執(zhí)行流程圖

?

?

理解:

1、HttpProcessor是HTTP protocol processor的縮寫,它的作用就是給我們寫的request設(shè)置默認(rèn)參數(shù)(比如協(xié)議版本,是否保持連接等),一般我們寫的HttpRequest只有url和數(shù)據(jù),事實(shí)上,一個(gè)完整的請(qǐng)求不只有這兩個(gè)數(shù)據(jù),查看一下HTTP協(xié)議就知道一個(gè)請(qǐng)求需要很多數(shù)據(jù)了,而之所以我們不用寫這些數(shù)據(jù),是因?yàn)镠ttpCore或HttpClient幫我們完成了,而負(fù)責(zé)這部分功能的就是HttpProcessor。

2、HttpRequestExecutor 的作用就是調(diào)用HttpProcessor完善原始HttpRequest,根據(jù)請(qǐng)求參數(shù)使用HttpClientConnection執(zhí)行HttpRequest并接受HttpResponse,以及設(shè)置HttpCoreContext參數(shù)。

3、HttpClientConnection獲取方法有兩種:1、自己新建conn綁定根據(jù)host新建的socket;2、新建connpool,根據(jù)host從pool中獲取conn

4、HttpCoreContext:是為了完成會(huì)話功能,下邊是官方注釋:

?

* The primary purpose of the HTTP context is to facilitate information sharing * among various logically related components. HTTP context can be used * to store a processing state for one message or several consecutive messages. * Multiple logically related messages can participate in a logical session * if the same context is reused between consecutive messages.

?

?

二、HttpResponse的獲取原理

三、HttpCore和HttpClient

  • HttpComponents Core == HttpCore
    • 實(shí)現(xiàn)了一系列的底層傳輸?shù)墓δ?/li>
    • 這些底層功能,可以用來去建立自己的client和server
    • 支持兩種I/O模式:
      • 阻塞型Blocking:基于典型的Java的I/O模型
      • 非阻塞型Non-Blocking:基于Java的NIO,事件驅(qū)動(dòng)型
      • BIO:Blocking IONIO和AIO的區(qū)別
      • NIO:buffer、channel和selector
      • AIO:事件驅(qū)動(dòng)
    • 在線文檔:
      • HttpCore Tutorial
      • 中文版:HttpCore-Simplified Chinese.pdf
    • 示例代碼:HttpCore Examples
  • HttpComponents Client == HttpClient
    • 兼容HTTP 1.1
    • 基于HttpCore
      • 意味著:導(dǎo)入對(duì)應(yīng)的庫HttpClient庫時(shí),也要導(dǎo)入相關(guān)的HttpCore的庫
    • 同時(shí)提供了其他功能:
      • 客戶端認(rèn)證功能
      • HTTP狀態(tài)管理
      • HTTP連接管理
    • HttpClient是之前常用的那個(gè):Commons HttpClient 3.x的繼承者
      • 之前的HttpClient 3.x,現(xiàn)已廢棄
      • 如果還要用之前的HttpClient 3.x,也強(qiáng)烈推薦你換用最新的HttpClient 4.1(或更新版本的)
      • 在線文檔:
        • HttpClient Tutorial
        • 中文版:HttpClient Tutorial Simplified Chinese
    • 示例代碼:HttpClient Examples
    • HttpClient還有個(gè)異步的版本:
      • Asynch HttpClient

四、參考文檔

https://blog.csdn.net/ty497122758/article/details/78979302

總結(jié)

以上是生活随笔為你收集整理的HttpCore和HttpClient的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。