HttpClient學習(一)—— 基本使用
阿新 • • 發佈:2019-05-13
creat 編程工具 sea httpget print 連接超時 -c iba ava
HttpClient是支持Http協議的客戶端編程工具包。
簡單使用
引入依賴
<dependency> <groupId>org.apache.httpcomponents</groupId> <artifactId>httpclient</artifactId> <version>4.5.5</version> </dependency> <dependency> <groupId>com.alibaba</groupId> <artifactId>fastjson</artifactId> <version>1.2.47</version> </dependency>
一個簡單的Get請求
public static void main(String[] args) { //創建HttpClient實例 CloseableHttpClient httpClient = HttpClients.createDefault(); //創建HttpGet實例 HttpGet httpGet = new HttpGet("http://www.baidu.com"); CloseableHttpResponse response = null; //執行Get請求 try { response = httpClient.execute(httpGet); //獲取實體 HttpEntity httpEntity = response.getEntity(); //解析實體 System.out.println(EntityUtils.toString(httpEntity,"utf-8")); response.close(); httpClient.close(); } catch (IOException e) { e.printStackTrace(); } }
Post請求、請求頭、請求參數
使用代理
設置超時時間
HttpClient內部有三個超時時間設置:連接池獲取可用連接超時,連接超時,讀取數據超時
先連接,後讀取。
RequestConfig requestConfig = RequestConfig.custom() //從連接池中獲取連接的超時時間 .setConnectTimeout(5000) //httpclient會創建一個異步線程用以創建socket連接,此處設置該socket的連接超時時間 .setConnectionRequestTimeout(1000) //socket讀數據超時時間:從服務器獲取響應數據的超時時間 .setSocketTimeout(5000) .build(); httpGet.setConfig(requestConfig);
參考文檔
HttpClient源碼解析系列:第二篇:極簡版實現
HttpClient官網 Quick Start
參考視頻
一頭紮進HttpClient
HttpClient學習(一)—— 基本使用