1. 程式人生 > >【HttpClient4.5實訓】一.HttpClient4.5模擬瀏覽器GET請求訪問新浪網(非原文教程)

【HttpClient4.5實訓】一.HttpClient4.5模擬瀏覽器GET請求訪問新浪網(非原文教程)

更多HttpClient4.5教程請訪問點選開啟連結

=====================================================================

問題:模擬瀏覽器訪問新浪網http://www.sina.com.cn/並解析返回結果

一、分析

經過前面的學習,已經能掌握了GET請求並解析返回結果,如下圖:


一個使用HttpClient4.5典型的GET訪問步驟為:

1.構建HttpClient-------------->首先你得有一個瀏覽器

2.構建請求(起始行、首部)

3.使用HttpClient執行請求

4.解析相應(起始行、首部、實體)

另外還包括釋放資源HttpClient、實體、響應

二、構建

下面就按照上面的步驟來進行構造

匯入HttpClient4.5的庫(本文用Eclipse4.4)


1.構建HttpClient

CloseableHttpClient client=HttpClients.createDefault();

程式結尾需要關閉

client.close();

2.構建請求

//請求起始行--HttpClient會根據資訊自動構建
HttpGet get=new HttpGet("http://www.sina.com.cn/");
//請求首部--可選的,User-Agent對於一些伺服器必選,不加可能不會返回正確結果
get.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; WOW64; rv:39.0) Gecko/20100101 Firefox/39.0");
//執行請求
CloseableHttpResponse response=client.execute(get);

3.執行請求
CloseableHttpResponse response=client.execute(get);

//獲得起始行
System.out.println(response.getStatusLine().toString()+"\n");
//獲得首部---當然也可以使用其他方法獲取
Header[] hs=response.getAllHeaders();
for(Header h:hs){
	System.out.println(h.getName()+":\t"+h.getValue()+"\n");
}
//獲取實體
HttpEntity ety=response.getEntity();
System.out.println(EntityUtils.toString(ety,"GBK"));//新浪網的編碼格式個GBK
EntityUtils.consume(ety);//釋放實體
		
response.close();//關閉響應


三、完整的程式

為了方便觀看,我直接在主函式上丟擲異常了,真正寫的時候需要try-catch-finally


返回結果: