1. 程式人生 > >Apache下兩個HttpClient的區(org.apache.commons.httpclient.HttpClient,org.apache.http.client.HttpClient)

Apache下兩個HttpClient的區(org.apache.commons.httpclient.HttpClient,org.apache.http.client.HttpClient)

在我們使用java來模擬提交時經常會用到HttpClient類,但是會發現在Apache下有兩個包下有此類。

1. org.apache.commons.httpclient.HttpClient

2. org.apache.http.client.HttpClient


從官網上查詢到commons包下的HttpClient的專案將結束,而不再被開發。client包下的HttpClient和httpcore httpcomponents專案的模組,它提供了更好的效能和更大的靈活性。


簡單介紹使用HttpClient傳送請求、接收響應,一般需要如下步驟:


1. 建立CloseableHttpClient物件。
2. 建立請求方法的例項,並指定請求URL。如果需要傳送GET請求,建立HttpGet物件;如果需要傳送POST請求,建立HttpPost物件。
3. 如果需要傳送請求引數,可可呼叫setEntity(HttpEntity entity)方法來設定請求引數。setParams方法已過時(4.4.1版本)。
4. 呼叫HttpGet、HttpPost物件的setHeader(String name, String value)方法設定header資訊,或者呼叫setHeaders(Header[] headers)設定一組header資訊。
5. 呼叫CloseableHttpClient物件的execute(HttpUriRequest request)傳送請求,該方法返回一個CloseableHttpResponse。
6. 呼叫HttpResponse的getEntity()方法可獲取HttpEntity物件,該物件包裝了伺服器的響應內容。程式可通過該物件獲取伺服器的響應內容;呼叫CloseableHttpResponse的getAllHeaders()、getHeaders(String name)等方法可獲取伺服器的響應頭。
7. 釋放連線。無論執行方法是否成功,都必須釋放連線。

		try {  
	        CloseableHttpClient httpclient = HttpClients.createDefault();  
		    HttpPost httppost = new HttpPost("http://www.baidu.com"); //此url地址修改  
		    //新增http頭資訊  
		    httppost.addHeader("Authorization", "Basic eWltZWk6UHU5ZUhiSEZvRTR1a2Zh");
		    httppost.addHeader("Content-Type", "application/json");  
  
		    httppost.setEntity(new StringEntity(str));     
		    CloseableHttpResponse response = httpclient.execute(httppost);  
		    //檢驗狀態碼,如果成功接收資料  
		    int code = response.getStatusLine().getStatusCode();  
		    if (code == 200) {   
		        respStr = EntityUtils.toString(response.getEntity());        
		    }  
		    response.close();
		} catch (Exception e) {   
			e.printStackTrace();
		} finally {
			
		}


建議使用org.apache.http.client.HttpClient。

相關推薦

ApacheHttpClientorg.apache.commons.httpclient.HttpClientorg.apache.http.client.HttpClient

在我們使用java來模擬提交時經常會用到HttpClient類,但是會發現在Apache下有兩個包下有此類。 1. org.apache.commons.httpclient.HttpClient 2. org.apache.http.client.HttpClient

Linux系統在未登入的情況修改root密碼方法linux系統忘記root密碼進不去系統怎麼辦

linux系統忘記root密碼,進不去系統怎麼辦 有時候我們會遇到這樣的情況,很久沒用的系統, 想要登入時卻發現忘記了root密碼,那該怎麼辦?一般來說我們可以進入單使用者或者通過編輯grub選單來修改root密碼。 對於一些版本的OS(如redhat)來說,編輯grub,

JVM記憶體結構--新生代及新生代裡的Survivor(一輪S0與S1交換角色如此迴圈往復)、常見調優引數

轉自http://www.cnblogs.com/duanxz/p/6076662.html 一、為什麼會有年輕代   我們先來屢屢,為什麼需要把堆分代?不分代不能完成他所做的事情麼?其實不分代完全可以,分代的唯一理由就是優化GC效能。你先想想,如果沒有分代,那我們

Android studio沒有org.apache.http.client.HttpClient;等包問題 解決方案

target ace mon studio clas 技術 upload rep img 以前用Eclipse做Android開發工具一直使用apache的http做網絡請求,最近換用了Android studio發現沒有辦法引用apache的包,下面是我引用的步驟

在idea項目之間的maven父子級項目依賴

all 問題 .html pen pom nbsp 操作 es2017 包含 配置:idea 在一個項目中的父子級依賴網上輪子太多,我就不重復造了,留個鏈接 http://www.cnblogs.com/tibit/p/6185704.html 說說一些我自己註意的問題,在

P和P1指向了O和O1變量對象的地址, 而不是O和O1的內容(對象的實際地址)——充分證明@是取變量對象的地址而不是變量裏面的內容夠清楚!

com 告訴 cnblogs src logs es2017 strong bsp html 如圖,為什麽這樣取出來的p,p1的值不一樣呢? 165232328群友庾偉洪告訴我: P和P1指向了O和O1兩個變量(對象)的地址, 而不是O和O1的內容(對象

Java集合框架上機練習題:編寫一個Book類該類至少有name和price屬性。該類要實現Comparable接口在接口的compareTo方法.....

ext .cn 數據庫 識別 方法 屬性 set package compareto 編寫一個Book類,該類至少有name和price兩個屬性。該類要實現Comparable接口,在接口的compareTo()方法中規定兩個Book類實例的大小關系為二者的price屬性的

apache虛擬域名的配置windows

master win 目錄 一個 toml 就是 項目 慕課網 查看 在我們開發中通過虛擬域名來訪問一個指定的項目確實很方便,接下來教大家如何通過手動的方式去配置虛擬域名(已apache服務器為例) 一、首頁我們得找到host文件、windows下這個文件在c盤中WINDO

匯編語言——數據處理的基本問題處理的數據在什麽地方 要處理的數據有多長

inf ron 進行 end 尺寸 程序 訪問 com 尋址 bx、si、di、bp 1、在8086CPU 中,只有這4個寄存器(bx、bp、si、di)可以用在“[…]” 中來進行內存單元的尋址。 2、在“[…]” 中,這4個寄存器(bx、bp、si、di)可以單個出現,

Linux SD卡建立

查看分區 lin log 文件 pac 一個 文件系統 png 主分區 本文主要介紹Linux 環境下SD卡建立兩個分區的操作流程: 操作環境:Linux Ubuntu 2016.4 操作目的:將 SD 卡分為兩個分區:第一分區格式為 FAT32,大小500M。第二個分

Centos6.5調整同一VGLV空間

centos LV VG 實驗目的:調整前lv_root分區大小為50GLv_home分區大小為45G 調整後(將lv_home分區減少30G,將30G空間加到lv_root分區)lv_root分區大小為80GLv_home分區大小為15G 操作前註意備份重要數據1 查看磁盤使用情況[ro

ajax遇到的小bug

字符 過去 方案 ima 錯誤 復選框 兩個 中項 技術分享 1.公司的一個因子系數配置頁面,可以勾選中多個復選框進行刪除,刪除後保存操作軌跡表。但不知道之前是誰這樣寫的 此挖坑人,對於選中的多個復選框循環調用後臺方法,但是這些請求都請求後臺了,執行完畢的先後順序並沒有保

合併單鏈表連結串列方式

假設頭指標為La、Lb單鏈表分別為線性表LA、LB的儲存結構,現在要合併La、Lb得到單鏈表Lc void MergeList_L(LinkList La, LinkList Lb, LinkList Lc){ //已知La、Lb的元素按值非遞減排列 //歸併La、Lb得到單鏈表Lc,

用C程式設計設定外部中斷INT0和INT1按鍵優先順序IP=0x04即把外部中斷1設定為高階優先順序外部中斷0為低階優先順序使外部中斷1巢狀在外部中斷0中。

問題 用C程式設計,設定兩個外部中斷(INT0和INT1)按鍵,優先順序IP=0x04,即把外部中斷1設定為高階優先順序,外部中斷0為低階優先順序,使外部中斷1巢狀在外部中斷0中。 要求:中斷觸發方式為下降沿觸發,按鍵有消抖功能 模擬 程式碼 #include <

證明一個環狀連結串列首尾相連指標head1和head2 從同一個節點出發head1每次走一步 head2 每次走他們第一次相遇於出發的節點

一個環狀連結串列(收尾相連),兩個指標 head1和head2 從同一個節點出發,head1每次走一步, head2 每次走兩步,請證明,兩個指標第一次相遇於出發的節點。 設兩個指標走的次數為 x,使用簡單的數學公式即可證明。難度 1 面。考察基本的數學 知識。 設連結串列有 m 個元素,head1

解決啟動時報ClassNotFoundException: org.apache.http.client.HttpClient異常的問題

最近在研究阿里的分散式事務框架GTS,在執行sample-txc-simple時,拋以下異常: JM.Log:INFO Set diamond-client log path: C:\Users\chanson\logs\diamond-client Exception in thread "m

java 新生代Eden與Survivor的解釋

原文連結:聊聊JVM的年輕代 最近在學習《深入理解java虛擬機器》,在垃圾收集器這一部分對於Eden和Surviror不太清晰,發現一篇講的很棒的部落格,分享給大家,一起學習一下!  1.為什麼會有年輕代 我們先來屢屢,為什麼需要把堆分代?不分代不能完成

編寫一個Java應用程式當用戶在輸入對話方塊中輸入日期後日期格式為YYYYMMDD如1999年1月12日應輸入為19990112程式將判斷日期的先後順序以及日期之間的間隔天數

編寫一個Java應用程式,當用戶在輸入對話方塊中輸入兩個日期後(日期格式為YYYYMMDD, 如1999年1月12日應輸入為19990112), 程式將判斷兩個日期的先後順序, 以及兩個日期之間的間隔天數(例如1999年1月1日和1999年1月2日之間的間隔是1天。  

新生代EdenSurvivor及老年代的關係

偶然想起JVM年輕代中Eden區和兩個Survivor的比例,就想根據自己的理解和大家探討一下為什麼要配成8 :1 :1的比例。 一、JVM堆分代 1、JVM堆被分為了年輕代和老年代。年輕代的GC過程稱為Yong GC,速度快較頻繁。老年代的GC過程稱為Full GC,速度較慢應該儘量避免。