gpt4 book ai didi

java - 使用 HttpAsyncClient 发送异步调用时出现问题

转载 作者:行者123 更新时间:2023-12-02 11:47:53 24 4
gpt4 key购买 nike

我想向 java 中的 servlet 发送异步 post 请求。我正在使用 apache HttpAsyncClient,如以下方法所示。当我调试时,我看到调用此方法的进程会等待,直到被调用的 servlet 完成其处理。换句话说,调用看起来是同步的,而不是异步的。你知道我做错了什么吗?

谢谢!

public void sendPostRequestUsingHttpAsyncClient( String params)  {

try (CloseableHttpAsyncClient client = HttpAsyncClients.createDefault()) {
client.start();
HttpPost request = new HttpPost(URL);
StringEntity entity = new StringEntity(params, ContentType.create("application/json", Consts.UTF_8));
request.setEntity(entity);
Future<HttpResponse> future = client.execute(request, null);
try {
System.out.println(future.get().getStatusLine().getStatusCode());
} catch (InterruptedException | ExecutionException e) {
e.printStackTrace();
}

} catch (IOException e) {
e.printStackTrace();
}
}

最佳答案

当您执行 future.get() 时,您的代码将被阻止,直到成功执行 HTTP 请求

看来您对异步的期望与代码中实际发生的情况有点相距甚远。要获得 HttpAsyncClient 的优势,您可以在开始时执行多个请求,然后使用某种同步原语等待所有请求完成。

关于java - 使用 HttpAsyncClient 发送异步调用时出现问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48070289/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com