# Java Http 请求工具类 http-request
前言:
在我们日常工作中,我们需要经常和第三方接口进行交互通信,很多时候我们都是使用 http 协议进行交互,java 原生自带对 http 的支持 (java.net.*),但是使用起来不太方便,除此之外,用的最多的就是 apache httpclient 工具包。但是个人使用这么久而言,感觉不管是原生的亦或是 httpclient,使用起来都不太顺手,也略显复杂
在此推荐一个简单易用的类库: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> |
# 例子
# 发送一个 Get 请求获取响应报文
| String response = HttpRequest.get("http://www.baidu.com").body(); |
| System.out.println("Response was: "+response); |
# 发送一个带查询参数的 Get 请求获取响应报文
| 写法1: |
| HttpRequest request = HttpRequest.get("http://www.baidu.com",true,'q',"baseball gloves","size",100); |
| System.out.println(request.toString()); |
| |
| 写法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); |
| |
| 同理,发送Post请求只需把get方法换成Post即可。 |
# 发送请求上传附件
| 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 请求配置
| HttpRequest request = HttpRequest.get("https://google.com"); |
| |
| request.trustAllCerts(); |
| |
| request.trustAllHosts(); |
| |
| request.connectTimeout(60000); |
| |
| request.readTimeout(60000); |
| |
| 以上设置支持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"); |
| |
| request.useProxy("localhost", 8080); |
| |
| request.proxyBasic("username", "p4ssw0rd"); |
# 总结
此工具类方便易用,没有任何依赖库,源代码也只有一个类 HttpRequest,简洁明了,而且支持 Builder 模式链式调用。有兴趣的可以尝试使用,用过都说好,更多用法自行看官网例子。