網絡爬蟲 學習筆記

httpclient

1.HttpClient簡介

HTTP 協議可能是現在 Internet 上使用得最多、最重要的協議了,越來越多的 Java 應用程序需要直接通過 HTTP 協議來訪問網絡資源。雖然在 JDK 的 java net包中已經提供了訪問 HTTP 協議的基本功能,但是對於大部分應用程序來說,JDK 庫本身提供的功能還不夠豐富和靈活。HttpClient 是 Apache Jakarta Common 下的子項目,用來提供高效的、最新的、功能豐富的支持 HTTP 協議的客戶端編程工具包,並且它支持 HTTP 協議最新的版本和建議。HttpClient 已經應用在很多的項目中,比如 Apache Jakarta 上很著名的另外兩個開源項目 Cactus 和 HTMLUnit 都使用了 HttpClient。

2.HttpClient 功能介紹

以下列出的是 HttpClient 提供的主要的功能,要知道更多詳細的功能可以參見 HttpClient 的主頁。

(1)實現了所有 HTTP 的方法(GET,POST,PUT,HEAD 等)

(2)支持自動轉向

(3)支持 HTTPS 協議
 

(4)支持代理服務器等

3.HttpClient 基本功能的使用

(1) GET方法

使用 HttpClient 需要以下 6 個步驟:

        1. 創建 HttpClient 的實例

 

  2. 創建某種連接方法的實例,在這裏是 GetMethod。在 GetMethod 的構造函數中傳入待連接的地址

 

  3. 調用第一步中創建好的實例的 execute 方法來執行第二步中創建好的 method 實例

 

  4. 讀 response

 

  5. 釋放連接。無論執行方法是否成功,都必須釋放連接

 

  6. 對得到後的內容進行處理

 

  根據以上步驟,我們來編寫用GET方法來取得某網頁內容的代碼。

大部分情況下 HttpClient 默認的構造函數已經足夠使用。 HttpClient httpClient = new HttpClient();

創建GET方法的實例。在GET方法的構造函數中傳入待連接的地址即可。用GetMethod將會自動處理轉發過程,如果想要把自動處理轉發過程去掉的話,可以調用方法setFollowRedirects(false)。 GetMethod getMethod = new GetMethod(".....");

調用實例httpClient的executeMethod方法來執行getMethod。由於是執行在網絡上的程序,在運行executeMethod方法的時候,需要處理兩個異常,分別是HttpException和IOException。引起第一種異常的原因主要可能是在構造getMethod的時候傳入的協議不對,比如不小心將"http"寫成"htp",或者服務器端返回的內容不正常等,並且該異常發生是不可恢復的;第二種異常一般是由於網絡原因引起的異常,對於這種異常 (IOException),通過httpClient的方法setParameter設置你實現的恢復策略,本文中使用的是系統提供的默認恢復策略,

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章