Vert.x httpClient/webClient 逐块或作为流处理响应
Vert.x httpClient/webClient process response chunk by chunk or as stream
我有 vert.x 和 asyncHttpClient 的应用程序。我想用 vert.x httpClient (webClient) 替换 asyncHttpClient,但我需要能够按块或小部分数据(如 AsyncHttpClient 中的 org.asynchttpclient.AsyncHandler)或像流一样处理响应。可能吗?我查看自定义 BodyCodec,但无法理解自定义 WriteStream 中的数据流。
使用专为缓冲响应而设计的 Vert.x Web 客户端无法轻松做到这一点。
但是您可以使用 Vert.x Http 客户端执行此操作:
client.request(HttpMethod.GET, "some-uri", ar1 -> {
if (ar1.succeeded()) {
HttpClientRequest request = ar1.result();
request.send(ar2 -> {
HttpClientResponse response = ar2.result();
response.handler(buffer -> {
System.out.println("Received a part of the response body: " + buffer);
});
});
}
});
我有 vert.x 和 asyncHttpClient 的应用程序。我想用 vert.x httpClient (webClient) 替换 asyncHttpClient,但我需要能够按块或小部分数据(如 AsyncHttpClient 中的 org.asynchttpclient.AsyncHandler)或像流一样处理响应。可能吗?我查看自定义 BodyCodec,但无法理解自定义 WriteStream 中的数据流。
使用专为缓冲响应而设计的 Vert.x Web 客户端无法轻松做到这一点。
但是您可以使用 Vert.x Http 客户端执行此操作:
client.request(HttpMethod.GET, "some-uri", ar1 -> {
if (ar1.succeeded()) {
HttpClientRequest request = ar1.result();
request.send(ar2 -> {
HttpClientResponse response = ar2.result();
response.handler(buffer -> {
System.out.println("Received a part of the response body: " + buffer);
});
});
}
});