亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何使用apache的HttpClient進行http通訊

發布時間:2021-09-17 15:24:26 來源:億速云 閱讀:145 作者:chen 欄目:MongoDB數據庫

這篇文章主要講解了“如何使用apache的HttpClient進行http通訊”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“如何使用apache的HttpClient進行http通訊”吧!

我們用apache的HttpClient這個庫消費云端的Restful API時,一般都需要兩次HTTP調用,第一次獲得某種token,比如獲取防止跨域請求偽造攻擊Cross-site request forgery - CSRF的token,或者比如微信API的access token,第二次再進行真正的API消費。

通常情況下,第一次請求完畢后,服務器都會給客戶端返回一些cookie字段,在第二次請求時,如果使用的是postman測試工具或者apache的HttpClient這個庫,cookie字段都會自動被附加在第二次請求的HTTP頭部。詳情可以參考我寫的另一篇博客:OData service parallel performance measurement – how to deal with XSRF token in Java Program and JMeter

https://blogs.sap.com/2017/08/28/odata-service-parallele-performance-measurement-how-to-deal-with-xsrf-token-in-java-program-and-jmeter/

本文就來介紹apache的HttpClient,在發送第二個Http請求時,是如何自動插入從第一個請求獲得的服務器頒發的cookie的。

首先進入HttpClient的單步調試:InternalHttpClient.doExecute方法:

如何使用apache的HttpClient進行http通訊

第85行的origheaders,即取出程序員在代碼里指定的http請求頭部字段,比如basic Authentication,content-type,token等等:

如何使用apache的HttpClient進行http通訊

這個cookie是什么時候傳進來的?

如何使用apache的HttpClient進行http通訊

看來我們必須進入httpcore-4.4.3.jar這個apache HttpClient的實現里去調試。

如何使用apache的HttpClient進行http通訊

經過觀察發現,一旦我執行完204行的conn.sendRequestHeader方法,就能觀察到Cookie被自動設置了,所以奧妙就在第204行里。

如何使用apache的HttpClient進行http通訊

自動添加Content-Length頭部字段:

如何使用apache的HttpClient進行http通訊

由此可見Content-length是通過方法entity.getContentLength()自動計算出來的,因此我們程序員不必在自己的應用代碼里重復這個計算動作。

如何使用apache的HttpClient進行http通訊

自動加入host字段:

如何使用apache的HttpClient進行http通訊

自動加入Connection: Keep-Alive

如何使用apache的HttpClient進行http通訊

UserAgent的自動填充:Apache-HttpClient/4.5.1, 這個也不用程序員操心。

如何使用apache的HttpClient進行http通訊

終于到了我要找的RequestAddCookies這個HTTPRequestInterceptor了。光從這個類的字面意思就能猜到它和HTTP請求的Cookie有關。

如何使用apache的HttpClient進行http通訊

新建一個Cookie,這個CookieOrigin構造函數里的hpst,path和secure標志位都是Chrome開發者工具的Cookie標簽頁里能看到。

如何使用apache的HttpClient進行http通訊

從 Cookie Store里取出前一次請求中由服務器返回的Cookie:

如何使用apache的HttpClient進行http通訊

如何使用apache的HttpClient進行http通訊

如何使用apache的HttpClient進行http通訊

這里把Cookie store里的cookie加到第二個請求的頭部字段,謎底就這樣解開了。

如何使用apache的HttpClient進行http通訊

感謝各位的閱讀,以上就是“如何使用apache的HttpClient進行http通訊”的內容了,經過本文的學習后,相信大家對如何使用apache的HttpClient進行http通訊這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

巴塘县| 沐川县| 云安县| 德令哈市| 治县。| 南部县| 蚌埠市| 芜湖县| 柏乡县| 丽江市| 抚州市| 西乡县| 彭泽县| 临城县| 苍梧县| 开阳县| 额尔古纳市| 全州县| 潮安县| 汝城县| 民县| 堆龙德庆县| 静安区| 鹰潭市| 高青县| 天长市| 阳城县| 凤庆县| 张家界市| 公主岭市| 阿拉善左旗| 顺昌县| 新平| 汕头市| 武穴市| 巴林右旗| 安义县| 尖扎县| 竹溪县| 昌都县| 含山县|