強大的httpClientUtils


<!-- https://mvnrepository.com/artifact/com.arronlong/httpclientutil -->
<dependency>
    <groupId>com.arronlong</groupId>
    <artifactId>httpclientutil</artifactId>
    <version>1.0.4</version>
</dependency>

 簡單Demo在test包里還有各種測試demo,各測試類的源碼在src/test/java/com/httpclient/test包路徑下。

 

public static void main(String[] args) throws HttpProcessException, FileNotFoundException {
     String url = "https://github.com/Arronlong/httpclientutil";
     
     //最簡單的使用:
     String html = HttpClientUtil.get(HttpConfig.custom().url(url));
     System.out.println(html);
     
     //---------------------------------
     //            【詳細說明】
     //--------------------------------
     
     //插件式配置Header(各種header信息、自定義header)
     Header[] headers = HttpHeader.custom()
                                   .userAgent("javacl")
                                  .other("customer", "自定義")
                                  .build();
     
     //插件式配置生成HttpClient時所需參數(超時、連接池、ssl、重試)
     HCB hcb = HCB.custom()
                  .timeout(1000) //超時
                  .pool(100, 10) //啟用連接池,每個路由最大創建10個鏈接,總連接數限制為100個
                  .sslpv(SSLProtocolVersion.TLSv1_2)     //設置ssl版本號,默認SSLv3,也可以調用sslpv("TLSv1.2")
                  .ssl()            //https,支持自定義ssl證書路徑和密碼,ssl(String keyStorePath, String keyStorepass)
                  .retry(5)        //重試5次
                  ;
     
     HttpClient client = hcb.build();
     
     Map<String, Object> map = new HashMap<String, Object>();
     map.put("key1", "value1");
     map.put("key2", "value2");
     
     //插件式配置請求參數(網址、請求參數、編碼、client)
     HttpConfig config = HttpConfig.custom()
                                   .headers(headers)    //設置headers,不需要時則無需設置
                                   .url(url)              //設置請求的url
                                   .map(map)              //設置請求參數,沒有則無需設置
                                   .encoding("utf-8") //設置請求和返回編碼,默認就是Charset.defaultCharset()
                                   .client(client)    //如果只是簡單使用,無需設置,會自動獲取默認的一個client對象
                                   //.inenc("utf-8")  //設置請求編碼,如果請求返回一直,不需要再單獨設置
                                   //.inenc("utf-8")    //設置返回編碼,如果請求返回一直,不需要再單獨設置
                                   //.json("json字符串")                          //json方式請求的話,就不用設置map方法,當然二者可以共用。
                                   //.context(HttpCookies.custom().getContext()) //設置cookie,用於完成攜帶cookie的操作
                                   //.out(new FileOutputStream("保存地址"))       //下載的話,設置這個方法,否則不要設置
                                   //.files(new String[]{"d:/1.txt","d:/2.txt"}) //上傳的話,傳遞文件路徑,一般還需map配置,設置服務器保存路徑
                                   ;
     
     
     //使用方式:
     String result1 = HttpClientUtil.get(config);     //get請求
     String result2 = HttpClientUtil.post(config);    //post請求
     System.out.println(result1);
     System.out.println(result2);
     
     //HttpClientUtil.down(config);                   //下載,需要調用config.out(fileOutputStream對象)
     //HttpClientUtil.upload(config);                 //上傳,需要調用config.files(文件路徑數組)
     
     //如果指向看是否訪問正常
     //String result3 = HttpClientUtil.head(config); // 返回Http協議號+狀態碼
     //int statusCode = HttpClientUtil.status(config);//返回狀態碼
     
     //[新增方法]sendAndGetResp,可以返回原生的HttpResponse對象,
     //同時返回常用的幾類對象:result、header、StatusLine、StatusCode
     HttpResult respResult = HttpClientUtil.sendAndGetResp(config);
     System.out.println("返回結果:\n"+respResult.getResult());
     System.out.println("返回resp-header:"+respResult.getRespHeaders());//可以遍歷
     System.out.println("返回具體resp-header:"+respResult.getHeaders("Date"));
     System.out.println("返回StatusLine對象:"+respResult.getStatusLine());
     System.out.println("返回StatusCode:"+respResult.getStatusCode());
     System.out.println("返回HttpResponse對象)(可自行處理):"+respResult.getResp());
}

 

post示例:

// 請求體
String json = "";
// url地址            
String url = "";
// config配置    
HttpConfig config = HttpConfig.custom().url(url).json(json).encoding("utf-8");
// 響應
String response = HttpClientUtil.post(config);

System.out.println(response);

 


免責聲明!

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



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