UniRest是什么?
Unirest 是一套跨语言轻量级HTTP开发库,由Kong团队维护,此团队同时维护着另一个著名开源网关项目API Gateway Kong.
MAVEN安装
<!-- 一般情形下maven引用的方式 -->
<dependency>
<groupId>com.konghq</groupId>
<artifactId>unirest-java</artifactId>
<version>3.5.00</version>
</dependency>
<!-- 需要作为独立jar文件引用时(包含隐式依赖) -->
<dependency>
<groupId>com.konghq</groupId>
<artifactId>unirest-java</artifactId>
<version>3.5.00</version>
<classifier>standalone</classifier>
</dependency>
请求
使用JAVA语言,创建一个Unirest请求相当方便,一个常见的POST请求如下:
HttpResponse<JsonNode> 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序列化对象方式生成请求体。