91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Java httpClient如何使用

發布時間:2020-10-27 16:26:04 來源:億速云 閱讀:287 作者:Leah 欄目:開發技術

這篇文章運用簡單易懂的例子給大家介紹Java httpClient如何使用,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

Java 開發語言中實現HTTP請求的方法主要有兩種:一種是JAVA的標準類HttpUrlConnection,比較原生的實現方法;另一種是第三方開源框架HTTPClient。

HttpClient相比傳統JDK自帶的URLConnection,增加了易用性和靈活性,它不僅是客戶端發送Http請求變得容易,而且也方便了開發人員測試接口(基于Http協議的),即提高了開發的效率,也方便提高代碼的健壯性。

一、HttpClient簡單介紹

HttpClient是Apache Jakarta Common下的子項目,用來提供高效的、最新的、功能豐富的支持HTTP協議的客戶端編程工具包,并且它支持HTTP協議最新的版本和建議。HttpClient已經應用在很多的項目中,比如Apache Jakarta上很著名的另外兩個開源項目Cactus和HTMLUnit都使用了HttpClient。

HTTPClient對HTTP的封裝性比較不錯,通過它基本上能夠滿足我們大部分的需求。HttpClient3.1 是 org.apache.commons.httpclient下操作遠程 url的工具包,雖然已不再更新,但實現工作中使用httpClient3.1的代碼還是很多。HttpClient4.5 是org.apache.http.client下操作遠程 url的工具包。

二、HttpClient特性

  • 基于標準、純凈的java語言。實現了Http1.0和Http1.1。
  • 以可擴展的面向對象的結構實現了Http全部的方法(GET, POST, PUT, DELETE, HEAD, OPTIONS, and TRACE)。
  • 支持HTTPS協議。
  • 通過Http代理建立透明的連接。
  • 利用CONNECT方法通過Http代理建立隧道的https連接。
  • Basic, Digest, NTLMv1, NTLMv2, NTLM2 Session, SNPNEGO/Kerberos認證方案。
  • 插件式的自定義認證方案。
  • 便攜可靠的套接字工廠使它更容易的使用第三方解決方案。
  • 連接管理器支持多線程應用。支持設置最大連接數,同時支持設置每個主機的最大連接數,發現并關閉過期的連接。
  • 自動處理Set-Cookie中的Cookie。
  • 插件式的自定義Cookie策略。
  • Request的輸出流可以避免流中內容直接緩沖到socket服務器
  • Response的輸入流可以有效的從socket服務器直接讀取相應內容。
  • 在http1.0和http1.1中利用KeepAlive保持持久連接。
  • 直接獲取服務器發送的response code和 headers。
  • 設置連接超時的能力。
  • 實驗性的支持http1.1 response caching。
  • 源代碼基于Apache License 可免費獲取。
     

三、使用方法

使用HttpClient發送請求、接收響應很簡單,一般需要如下幾步即可。

  1. 創建HttpClient對象。
  2. 創建請求方法的實例,并指定請求URL。如果需要發送GET請求,創建HttpGet對象;如果需要發送POST請求,創建HttpPost對象。
  3. 如果需要發送請求參數,可調用HttpGet、HttpPost共同的setParams(HetpParams params)方法來添加請求參數;對于HttpPost對象而言,也可調用setEntity(HttpEntity entity)方法來設置請求參數。
  4. 調用HttpClient對象的execute(HttpUriRequest request)發送請求,該方法返回一個HttpResponse。
  5. 調用HttpResponse的getAllHeaders()、getHeaders(String name)等方法可獲取服務器的響應頭;調用HttpResponse的getEntity()方法可獲取HttpEntity對象,該對象包裝了服務器的響應內容。程序可通過該對象獲取服務器的響應內容。
  6. 釋放連接。無論執行方法是否成功,都必須釋放連接

四、使用示例

HttpClient 為第三方Http 客戶端類庫;在開發過程中主要是發送Http協議的Post請求和Get請求。其中Post請求使用HttpPost對象構建、Get請求使用HttpGet對象構建。

HttpGet 請求

public static void main(String[] args) throws Exception {
	// 格式化請求url
  // String cmd=String.format("http://%s:%s@%s",username,password,split[1]);
	
	// 請求地址
  String url = "https://blog.csdn.net/amosjob/article/details/82775290";
  // 創建默認的客戶端實例 
  CloseableHttpClient httpclient = HttpClients.createDefault();
  // 創建get請求實例 
  HttpGet httpGet = new HttpGet(url);
  // 設置頭部信息
  httpGet.setHeader("User-Agent", "Mozilla/5.0 (Windows NT 6.1; rv:6.0.2) Gecko/20100101 Firefox/6.0.2");
// httpGet.addHeader("x-api-key", "XXX");
// httpGet.addHeader("x-lang", "en-US");
  // 執行GET請求 返回響應實體 
  HttpResponse response = httpclient.execute(httpGet);
  // 獲取響應碼
  int statusCode = response.getStatusLine().getStatusCode();
  // 獲取全部的請求頭
  Header[] allHeaders = response.getAllHeaders();
  System.out.println("響應狀態碼:" + statusCode);
  for (int i = 0; i < allHeaders.length; i++) {
  	 System.out.println("全部的請求頭:" + allHeaders[i]);
	}
  // 獲取響應消息實體 
  HttpEntity entity = response.getEntity();
  //打印輸出網頁的內容(可刪除)
  if (entity != null) {
  	// 推薦該辦法打印內容
  	System.out.println("響應的內容:"+EntityUtils.toString(entity));
  	
  	// 也可以使用這個方法
    InputStream inputStream = entity.getContent();
    InputStreamReader streamReader = new InputStreamReader(inputStream);
    int line;
    line = streamReader.read() ;
    while (line!= -1) {
      System.out.print((char)line);
      line = streamReader.read() ;
    }
  }
	// 關閉連接
	try {
		httpclient.close();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}

HttpPost 請求

public static void main(String[] args) throws Exception {
	// 請求地址
	String url = "https://passport.csdn.net/account/login";
	// 創建默認的客戶端實例
	CloseableHttpClient httpclient = HttpClients.createDefault();
	// 創建POST對象
	HttpPost httpPost = new HttpPost(url);
	// 傳參數
	List<NameValuePair> params = new ArrayList<NameValuePair>();
	params.add(new BasicNameValuePair("username", "admin"));
	params.add(new BasicNameValuePair("password", "12345"));
	try {
		UrlEncodedFormEntity entity = new UrlEncodedFormEntity(params);
		httpPost.setEntity(entity);
	} catch (Exception e) {
		e.printStackTrace();
	}
	// 執行GET請求 返回響應實體
	HttpResponse response = httpclient.execute(httpPost);
	// 獲取響應碼
	int statusCode = response.getStatusLine().getStatusCode();
	// 獲取全部的請求頭
	Header[] allHeaders = response.getAllHeaders();
	System.out.println("響應狀態碼:" + statusCode);
	for (int i = 0; i < allHeaders.length; i++) {
		System.out.println("全部的請求頭:" + allHeaders[i]);
	}
	// 獲取響應消息實體
	HttpEntity entity = response.getEntity();
	// 打印輸出網頁的內容(可刪除)
	if (entity != null) {
		System.out.println("響應的內容:"+EntityUtils.toString(entity));
	}
	// 關閉連接
	try {
		httpclient.close();
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}
}

關于Java httpClient如何使用就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

西昌市| 高雄县| 阿合奇县| 怀化市| 石柱| 苗栗市| 东光县| 侯马市| 华安县| 兴隆县| 沾益县| 长子县| 义马市| 靖远县| 岑巩县| 友谊县| 平顶山市| 卓尼县| 林西县| 寿光市| 普安县| 新竹市| 澜沧| 白朗县| 锦屏县| 普定县| 正安县| 西华县| 蛟河市| 历史| 同德县| 松潘县| 昌邑市| 舒城县| 深州市| 盈江县| 乌拉特前旗| 邢台市| 东兰县| 布尔津县| 天长市|