前言
在我們?nèi)粘9ぷ髦校覀冃枰?jīng)常和第三方接口進(jìn)行交互通信,很多時(shí)候我們都是使用http協(xié)議進(jìn)行交互,java原生自帶對(duì)http的支持(java.net.*),但是使用起來(lái)不太方便,除此之外,用的最多的就是apache httpclient工具包。但是個(gè)人使用這么久而言,感覺(jué)不管是原生的抑或是httpclient,使用起來(lái)都不太順手,也略顯復(fù)雜
在此推薦一個(gè)簡(jiǎn)單易用的類庫(kù)http-request
**github地址:https://github.com/kevinsawicki/http-request **
maven引入
<dependency>
<groupId>com.github.kevinsawicki</groupId>
<artifactId>http-request</artifactId>
<version>5.6</version>
</dependency>
例子
發(fā)送一個(gè)Get請(qǐng)求獲取響應(yīng)報(bào)文
String response = HttpRequest.get("http://www.baidu.com").body();
System.out.println("Response was: "+response);
發(fā)送一個(gè)帶查詢參數(shù)的Get請(qǐng)求獲取響應(yīng)報(bào)文
寫(xiě)法1:
HttpRequest request = HttpRequest.get("http://www.baidu.com",true,'q',"baseball gloves","size",100);
System.out.println(request.toString());// GET http://www.baidu.com?q=baseball%20gloves&size=100
寫(xiě)法2:
Map data = new HashMap();
data.put("q", "baseball gloves");
data.put("size", "100");
String resp =HttpRequest.get("http://www.baidu.com")form(data).body();
System.out.println("---------------response parameter:" + resp);
同理,發(fā)送Post請(qǐng)求只需把get方法換成Post即可。
發(fā)送請(qǐng)求上傳附件
HttpRequest request=HttpRequest.post("http://google.com");
request.part("status[body]","Making a multipart request");
request.part("status[image]",newFile("/home/kevin/Pictures/ide.png"));
if(request.ok()){
System.out.println("Status was updated");
}
常用http請(qǐng)求配置
HttpRequest request = HttpRequest.get("https://google.com");
//信任所有證書(shū)
request.trustAllCerts();
//信任所有地址
request.trustAllHosts();
//設(shè)置請(qǐng)求超時(shí)時(shí)間
request.connectTimeout(60000);
//設(shè)置讀取超時(shí)時(shí)間
request.readTimeout(60000);
以上設(shè)置支持Builder模式
String resp = HttpRequest.post("http://www.baidu.com").trustAllCerts().trustAllHosts()
.form(data)
.connectTimeout(60000)
.readTimeout(60000)
.body();
配置http代理
HttpRequest request = HttpRequest.get("https://google.com");
//Configure proxy
request.useProxy("localhost", 8080);
//Optional proxy basic authentication
request.proxyBasic("username", "p4ssw0rd");
總結(jié)
此工具類方便易用,沒(méi)有任何依賴庫(kù),源代碼也只有一個(gè)類HttpRequest,簡(jiǎn)潔明了,而且支持Builder模式鏈?zhǔn)秸{(diào)用。有興趣的同學(xué)可以嘗試使用,用過(guò)都說(shuō)好,更多用法請(qǐng)自行查看官網(wǎng)例子。