【HttpClient4.5實訓】一.HttpClient4.5模擬瀏覽器GET請求訪問新浪網(非原文教程)
阿新 • • 發佈:2019-01-10
更多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
返回結果: