我正在使用新的 Java 11 HTTP 客户端。我有一个请求,例如:
httpClient.sendAsync(request, discarding())
如何为 HTTP 错误添加处理程序?我需要记录错误,但我想保持请求异步。
400
目前,像or ,这样的HTTP 错误500
是静默的。我想在这些情况下记录状态代码和响应正文。我想这CompletableFuture
就像一个承诺,所以那里还没有回复。
我正在使用新的 Java 11 HTTP 客户端。我有一个请求,例如:
httpClient.sendAsync(request, discarding())
如何为 HTTP 错误添加处理程序?我需要记录错误,但我想保持请求异步。
400
目前,像or ,这样的HTTP 错误500
是静默的。我想在这些情况下记录状态代码和响应正文。我想这CompletableFuture
就像一个承诺,所以那里还没有回复。
您只需要注册一个具有可完成未来返回的依赖操作HttpClient::sendAsync
这是一个例子:
public static void main(String[] argv) {
var client = HttpClient.newBuilder().build();
var request = HttpRequest.newBuilder()
.uri(URI.create("http://www.example.com/"))
.build();
var cf = client.sendAsync(request, HttpResponse.BodyHandlers.discarding())
.thenApplyAsync((resp) -> {
int status = resp.statusCode();
if (status != 200) {
System.err.println("Error: " + resp.statusCode());
} else {
System.out.println("Success: " + resp.statusCode());
}
return resp;
});
cf.join(); // prevents main() from exiting too early
}