我正在使用新的 Java 11 HTTP 客户端。我有一个类似的请求:
httpClient.sendAsync(request, discarding())
如何为 HTTP 错误添加处理程序?我需要记录错误,但我想保持请求异步。
目前,HTTP 错误如
400
或 500
,沉默。我想在这些情况下记录状态代码和响应正文。
我想
CompletableFuture
就像一个 promise ,所以那里还没有回复。
最佳答案
你只需要用 HttpClient::sendAsync
返回的可完成 future 注册一个依赖 Action 。
下面是一个例子:
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
}
关于java - 使用 HTTP Java 客户端执行异步请求时如何处理错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56289893/