java+httpclient—— 一個簡單的get請求


package jkcs;

import java.io.IOException;

import org.apache.http.HttpEntity;
import org.apache.http.client.ClientProtocolException;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpGet;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.util.EntityUtils;

public class jiekoumoni 
{

    public static void main(String[] args) throws ClientProtocolException, IOException 
    {
    
        
        CloseableHttpClient client = HttpClients.createDefault();    //創建一個http客戶端
        
        
        
        HttpGet httpGet = new HttpGet("http://www.baidu.com"); // 通過httpget方式來實現我們的get請求
        
        
        
        
        CloseableHttpResponse Response = client.execute(httpGet); // 通過client調用execute方法,得到我們的執行結果就是一個response,所有的數據都封裝在response里面了
        
        
        System.out.println(Response.getProtocolVersion());
        
        System.out.println(Response.getStatusLine());  //打印捕獲的返回狀態
        
        
        System.out.println(Response.getStatusLine().getStatusCode());    //打印捕獲的狀態碼
        
        Response.close();  // 關閉
        
        
        

    }

}

 

 

執行結果:

 HTTP/1.1

 

HTTP/1.1 200 OK

 

200

 ===========================================================================================

 

 

簡介

HttpClient是Apache Jakarta Common下的子項目,用來提供高效的、最新的、功能豐富的支持HTTP協議的客戶端編程工具包,並且它支持HTTP協議最新的版本和建議。
HttpClient最新版本是HttpClient 4.5.3 (GA)。
官方下載:http://hc.apache.org/downloads.cgi

主要特性

  • 基於標准、純凈的Java語言,實現了HTTP1.0和HTTP1.1。
  • 以可擴展的面向對象的結構實現了HTTP全部的方法(GET, POST, PUT, DELETE, HEAD, OPTIONS, and TRACE)。
  • 支持加密的HTTPS協議(HTTP通過SSL協議)。
  • 通過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來保持持久連接。
  • 可以直接獲取服務器發送的響應碼和響應頭部。
  • 具備設置連接超時的能力。
  • 支持HTTP/1.1 響應緩存。
  • 源代碼基於Apache License 可免費獲取。

一般使用步驟

使用HttpClient發送請求、接收響應,一般需要以下步驟。
HttpGet請求響應的一般步驟:
1). 創建HttpClient對象,可以使用HttpClients.createDefault()


2). 如果是無參數的GET請求,則直接使用構造方法HttpGet(String url)創建HttpGet對象即可;


    如果是帶參數GET請求,則可以先使用URIBuilder(String url)創建對象,再調用addParameter(String param, String value)

    或setParameter(String param, String value)來設置請求參數,並調用build()方法構建一個URI對象。只有構造方法HttpGet(URI uri)來創建HttpGet對象。

 


3). 創建HttpResponse,調用HttpClient對象的execute(HttpUriRequest request)發送請求,該方法返回一個HttpResponse

 

     調用HttpResponsegetAllHeaders()、getHeaders(String name)等方法可獲取服務器的響應頭;

 

     調用HttpResponsegetEntity()方法可獲取HttpEntity對象,該對象包裝了服務器的響應內容。

     

 

    程序可通過該對象獲取服務器的響應內容。通過調用getStatusLine().getStatusCode()可以獲取響應狀態碼。

 


4). 釋放連接。

 

 

 

HttpPost請求響應的一般步驟:


1). 創建HttpClient對象,可以使用HttpClients.createDefault()


2). 如果是無參數的GET請求,則直接使用構造方法HttpPost(String url)創建HttpPost對象即可;


    如果是帶參數POST請求,先構建HttpEntity對象並設置請求參數,然后調用setEntity(HttpEntity entity)創建HttpPost對象。


3). 創建HttpResponse,調用HttpClient對象的execute(HttpUriRequest request)發送請求,該方法返回一個HttpResponse

 

    調用HttpResponsegetAllHeaders()、getHeaders(String name)等方法可獲取服務器的響應頭;

 

   調用HttpResponsegetEntity()方法可獲取HttpEntity對象,該對象包裝了服務器的響應內容。程序可通過該對象獲取服務器的響應內容。

 

   通過調用getStatusLine().getStatusCode()可以獲取響應狀態碼。

 

 


4). 釋放連接。




轉載:鏈接:https://www.jianshu.com/p/375be5929bed


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM