<!-- 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);