1. 程式人生 > >HttpClient_入門學習(一)

HttpClient_入門學習(一)

   HttpClient 是 ApacheJakarta Common 下的子專案,可以用來提供高效的、最新的、功能豐富的支援 HTTP 協 議的客戶端程式設計工具包(jar包),並且它支援 HTTP 協議最新的版本和建議。

  

  HttpClient主要的功能:

   1.實現了所有http方法(get,post,put,delete)等等....

   2. 支援自動轉向

   3.支援代理伺服器等

   4.支援https協議等


  但是,HttpClient並沒有眼中的那麼好,HttpClient的維護人員並不積極,因為api數量過多,很難在不破壞相容的情況 下更新迭代,HttpClient的備胎已經出現了,(HttpURLConnect)

   谷歌人員給出的原因如下

   1.上面我們講了,因為相容性性問題

   2.HttpURLConnect的api包很小,更適合安卓

   

3.HttpURLConnect更省流量,


  不過我們不能因為過時了就不學習了,既然來了就看完再走把....


 我在網上找了案例,和一些資料,為了能夠更好的學習........


 

   HttpClient提供了URLBuilder類來簡化url的建立 | 修改的過程.......


   我們還是來寫把,感覺這樣的話印象會深刻一點,

    1.建立一個maven工程

    

2.匯入依賴

           

 <dependency>
      <groupId>org.apache.httpcomponents</groupId>
      <artifactId>httpclient</artifactId>
      <version>4.3.5</version>
    </dependency>
    <dependency>
      <groupId>org.slf4j</groupId>
      <artifactId>slf4j-log4j12</artifactId>
      <version>1.6.6</version>
    </dependency>
    <dependency>
      <groupId>org.apache.commons</groupId>
      <artifactId>commons-io</artifactId>
      <version>1.3.2</version>
    </dependency>

    <dependency>
      <groupId>junit</groupId>
      <artifactId>junit</artifactId>
      <version>3.8.1</version>
      <scope>test</scope>
    </dependency>


          使用builder建立uri程式碼如下


   


   控制檯會輸出如下:

   

  

 系統接收到http請請求的時候,就會進行解析,然後進行響應,然後這個響應就是HTTP response.HTTP,響應的第一行是協議版本,

 然後是狀態碼以及文字,

 

  輸出結果如下

   

 訊息頭

  一個Http請求包含一系列訊息頭,用來對訊息進行描述,比如訊息長度,訊息型別等,HttpClient提供了獲取請求,新增,移除,

 列舉訊息頭等....

  

 推薦的獲取指定訊息的請求頭的方式是使用HeaderIterator


 控制檯會列印 :

 

 

  確保底層資源被釋放

 


   

  這裡需要說明一下,關閉http內容流跟http響應流的區別在於.前者通過消耗http內容流來保持連線,後者會立即關閉,丟棄

http連線.

 當然也有這種情況,這是需要注意的.我們只需要獲取響應頭的一小部分東西,但是我們需要獲取整個內容,並實現連結的重複性代價太大,

我們可以通過關閉響應的方式來關閉內容的輸入輸出流.

  



 以上程式碼後,連線變得不可用,所有的資源都被釋放.................


  HttpClient推薦我們使用,HttpEntity的getContent方法來獲取內容,或使用HttpEntity的writeTo方法來消耗掉實體內容,

 HtttpClient也提供了EntityUtils類來讀取,這個類提供了靜態方法可以更容易的讀取http內容,當時並不推薦使用,除非網站是可,

 信任的,並且內容長度不大,官方給了以下例子........


 

有些情況下,我們需要持久化資料,為了重複使用,這時我們應該把HttpEntity轉換成BufferedHttpClient();

  


 HTML表單
  很多應用程式都需要模擬提交表單這個過程,咋們爵個栗子,登陸一個網站或者將資料提交給伺服器,,,,,HttpClient就提供了一個 來幫忙我們實現這一例子,   

 HttpClient會對我們的編碼格式進行編碼,編碼內容如下

  username=zs&password=123


內容分塊