Unirest 是一套跨语言轻量级HTTP开发库。
Unirest 支持多种语言,如Node、Ruby、Java、PHP、Python、Objective-C、.NET 等,可发起 GET, POST, PUT, PATCH, DELETE, HEAD, OPTIONS 请求。
Unirest的使用简单便捷,代码量少,非常建议大家掌握。
Unirest官网使用文档:http://kong.github.io/unirest-java/
返回值类型:String byte[] Object Json File Entity实体类等类型,根据需要返回
如果不需要处理返回body内容,asEmpty是一个十分好用的方法,返回内容仍然包含status 和headers。
maven依赖:
<!-- Pull in as a traditional dependency -->
<dependency>
<groupId>com.konghq</groupId>
<artifactId>unirest-java</artifactId>
<version>3.14.1</version>
</dependency>
<!-- OR as a snazzy new standalone jar with shaded dependencies -->
<dependency>
<groupId>com.konghq</groupId>
<artifactId>unirest-java</artifactId>
<version>3.14.1</version>
<classifier>standalone</classifier>
</dependency>
Java代码实现:
/**
* 发起get请求--返回string
* @param url
* @param body
* @return
*/
public String doUnirestGet(String url, Map<String, Object> body) {
return Unirest.get("http://127.0.0.1:8801/test")
.header("charset", "utf-8")
.header("token", "token-value")
.queryString("userName","haha")//查询请求参数
//.queryString("fruit", Arrays.asList("apple", "orange"))//数组
//.queryString(ImmutableMap.of("droid", "Ringo"))//支持map
.asString()
.getBody();
}
请求体通过body方法指定,除非特别指定否则请求头中 Content-Type 统一设置为:text/plain; charset=UTF-8
/**
* 发起post请求--返回byte
* @param url
* @return
*/
public byte[] doUnirestPost(String url) {
//基本表单
//此类请求的Content-Type默认为application/x-www-form-urlencoded
byte [] result1 = Unirest.post("http://127.0.0.1:8801/test")
.header("charset", "utf-8")
.header("token", "token-value")
.field("userName","haha")//field即参数内容
.asBytes()
.getBody();
//请求体
//此类请求的Content-Type默认为text/plain; charset=UTF-8
Map<String, Object> body = new HashMap<>();
body.put("userName","haha");
byte [] result2 = Unirest.post("http://127.0.0.1:8801/test")
.header("charset", "utf-8")
.header("Accept", "application/json")
.header("token", "token-value")
.body(JSONObject.toJSONString(body))//请求内容
.asBytes()
.getBody();
return result1;
}
/**
* 发送路由请求--返回实体类
*/
public User doUnirestRoute(String id) {
return Unirest.get("http://127.0.0.1:8801/route/{id}")
.routeParam("id", id)
.asObject(User.class)
// .asObject(new GenericType<List<Book>>(){}) //返回list
.getBody();
}
/**
* 这种类型的请求中,Content-Type默认为multipart/form-data。
* 上传下载文件请求--返回空
*/
public void doUnirestFile(String id) {
//普通
Unirest.post("http://127.0.0.1:8801/upload")
.field("upload", new File("/test.zip"))
.asEmpty();
try{
//大文件上传
InputStream file = new FileInputStream(new File("/test.zip"));
Unirest.post("http://127.0.0.1:8801/upload")
.field("upload", file, "test.zip")
.asEmpty();
}catch (Exception e){
e.printStackTrace();
}
//下载文件
File result = Unirest.get("http://127.0.0.1:8801/download/test.zip")
.asFile("/desk/test.zip")
.getBody();
}
/**
* 异步请求
*/
public void doUnirestAsycRequest() {
CompletableFuture<HttpResponse<JsonNode>> future = Unirest.post("http://127.0.0.1:8801/asyc/request")
.header("accept", "application/json")
.field("test", "value1")
.asJsonAsync(response -> {
int code = response.getStatus();
JsonNode body = response.getBody();
});
}
以上就是我的简单使用!
看到一篇unirest中文使用文档--https://dswang.blog.csdn.net/article/details/112554371 很详细,我只试了在工作中用的比较多的使用方式,其他的可自行去看官方文档哦~