本文参考自Vert.x Web Client官方文档。套用官网的话来说,
Vert.x Web Client是一个异步的HTTP和HTTP/2网络客户端。
相对来说,这是一个比较小的框架,而且功能也很直接,做一个方便好用的HTTP客户端。它具有以下功能:
- Json body 编码 / 解码
- request 参数
- 统一的错误处理
- 表单提交
需要注意,它和Vertx核心包中的HttpClient
有很多联系。它继承了HttpClient
,提供了更多功能。
引用类库
要使用这个类库很简单。如果使用Maven,添加下面的依赖。
<dependency>
<groupId>io.vertx</groupId>
<artifactId>vertx-web-client</artifactId>
<version>3.4.2</version>
</dependency>
如果使用Gradle,添加下面的依赖。
dependencies {
compile 'io.vertx:vertx-web-client:3.4.2'
}
创建客户端
创建客户端稍微有点不一样。
WebClient client = WebClient.create(vertx);
如果要添加配置参数,可以这样做。
WebClientOptions options = new WebClientOptions()
.setUserAgent("My-App/1.2.3");
options.setKeepAlive(false);
WebClient client = WebClient.create(vertx, options);
如果已经有了HttpClient
,可以重用它。
WebClient client = WebClient.wrap(httpClient);
发起请求
无请求体的请求
这是最简单的情况,一般的GET、HEAD等请求都输这种方式。
webClient.get("www.baidu.com", "/")
.send(ar -> {
if (ar.succeeded()) {
HttpResponse<Buffer> response = ar.result();
System.out.println(response.body());
} else {
System.out.println(ar.cause());
}
});
如果要携带查询参数,可以采用流式API。
client
.get(8080, "myserver.mycompany.com", "/some-uri")
.addQueryParam("param", "param_value")
.send(ar -> {});
也可以直接在URL中设置查询参数。
HttpRequest<Buffer> request = client.get(8080, "myserver.mycompany.com", "/some-uri&#