UniRest是什么?
Unirest 是一套跨语言轻量级HTTP开发库,由Kong团队维护,此团队同时维护着另一个著名开源网关项目API Gateway Kong.
MAVEN安装
com.konghq
unirest-java
3.5.00
com.konghq
unirest-java
3.5.00
standalone
请求
使用JAVA语言,创建一个Unirest请求相当方便,一个常见的POST请求如下:
HttpResponse response =Unirest.post("http://httpbin.org/post")
.header("accept", "application/json")
.queryString("apiKey", "123")
.field("parameter", "value")
.field("foo", "bar")
.asJson();
路由参数
如果需要在URL中加入动态路由参数,可以先在URL中通过一个占位符标记参数位置,之后通过routeParam方法,动态指定参数值,如下所示:
Unirest.get("http://httpbin.org/{fruit}")
.routeParam("fruit", "apple")
.asString();
占位符的格式为{自定义名称},在示例中,{占位符}会被替换为 apple,并且所有占位符会自动使用
URL-Encoded转义。
查询参数
请求路径附带的参数可以通过如下方式逐个添加:
Unirest.get("http://httpbin.org")
.queryString("fruit", "apple")
.queryString("droid", "R2D2")
.asString();
// 请求路径 "http://httpbin.org?fruit=apple&droid=R2D2"
queryString 方法也支持通过数组,或Map传递参数
Unirest.get("http://httpbin.org")
.queryString("fruit", Arrays.asList("apple", "orange"))
.queryString(ImmutableMap.of("droid", "R2D2", "beatle", "Ringo"))
.asString();
// 请求路径 "http://httpbin.org?fruit=apple&fruit=orange&droid=R2D2&beatle=Ringo"
请求头
请求头通过header方法,添加:
Unirest.get("http://httpbin.org")
.header("Accept", "application/json")
.header("x-custom-header", "hello")
.asString();
Basic Authentication 认证
Unirest提供了一个方便的方法实现 Basic Authentication 认证,Unirest 会自动处理Base64编码部分,此认证建议使用HTTPS。
Unirest.get("http://httpbin.org")
.basicAuth("user", "password1!")
.asString();
// 请求头 "Authorization: Basic dXNlcjpwYXNzd29yZDEh"
请求体
请求体通过body方法指定,除非特别指定,否则请求头中 Content-Type 统一设置为:text/plain; charset=UTF-8
Unirest.post("http://httpbin.org")
.body("This is the entire body")
.asEmpty();
body方法传入对象,支持用Jackson序列化对象方式生成请求体。