首先建立乙個信任任何金鑰的策略。**很簡單,不去考慮證書鏈和授權型別,均認為是受信任的:
class anytruststrategy implements truststrategy
}
httpclient既能處理常規http協議,又能支援https,根源在於在連線管理器中註冊了不同的連線建立工廠。當訪問url的schema為http時,呼叫明文連線套節工廠來建立連線;當訪問url的schema為https時,呼叫ssl連線套接字工廠來建立連線。對於http的連線我們不做修改,只針對使用ssl的https連線來進行自定義:
//指定信任金鑰儲存物件和連線套接字工廠
trycatch(keystoreexception e) catch(keymanagementexception e) catch(nosuchalgorithmexception e)
registry registry = registrybuilder.build();在上述**中可以看到,首先建立了乙個金鑰儲存容器,隨後讓sslcontext開啟tls,並將金鑰儲存容器和信任任何主機的策略載入到該上下文中。構造ssl連線工廠時,將自定義的上下文和允許任何主機名通過校驗的指令一併傳入。最後將這樣乙個自定義的ssl連線工廠註冊到https協議上。
//設定連線管理器
//構建客戶端
httpclient client= httpclientbuilder.create().setconnectionmanager(connmanager).build();
為了讓我們的httpclient具有多執行緒處理的能力,連線管理器選用了poolinghttpclientconnectionmanager,將協議註冊資訊傳入連線管理器,最後再次利用構造器的模式建立出我們需要的httpclient。隨後的get/post請求發起方法http和https之間沒有差異。
為了驗證我們的**是否成功,可以做下junit單元測試:
@test
publicvoiddotest()throwsclientprotocolexception, urisyntaxexception, ioexception
執行後可以在控制台看到12306餘票查詢介面的html**
/**
* 基本post請求
* @param url 請求url
* @param queryparams 請求頭的查詢引數
* @param json 直接放入post請求體中的文字(請使用json)
//填入post json資料
使用HttpClient工具來傳送Http請求
httpclient 是 apache jakarta common 下的子專案,用來提供高效的 最新的 功能豐富的支援 http 協議的客戶端程式設計工具包,並且它支援 http 協議最新的版本和建議。httpclient 已經應用在很多的專案中,比如 apache jakarta 上很著名的另外...
JAVA使用HttpClient實現爬蟲技術
1.pom檔案中加入httpclient依賴包 2.建立乙個呼叫httpclient的工具類 建立closeablehttpclient 建立requestconfig private void createrequestconfig get請求不帶引數 param url return throw...
用HttpClient實現同步RTX
持續加班,到現在都還沒有緩過勁來,每天下班回來基本上就已經困的不行了,好不容易休息了下,好像又有點緩過來了,繼續寫。rtx下給提供了個新增使用者到部門的cgi,也不知道是我的機器有問題還是怎麼回事,在我機器上橫豎不好使,偶爾重啟下機器又可以用了,真的是有點莫名其妙了。可能在你對乙個事物沒有足夠的了解...