我有下面的方法,它使用Apache Commons Http客户机向给定的URI发送异步GET,并返回Future和响应。
CloseableHttpAsyncClient实现了Closeable,因此我使用try/resource结构。
public static Future<HttpResponse> sendAsyncGet(String uri) throws IOException {
try (CloseableHttpAsyncClient asyncHttpClient = HttpAsyncClients.createDefault()) {
asyncHttpClient.start();
HttpGet httpGet = new HttpGet(uri);
return asyncHttpClient.execute(httpGet, null);
}
下面您可以看到其用法:
Future<HttpResponse> future = sendAsyncGet("http://www.apache.org");
future.get(3, TimeUnit.SECONDS);
问题是,当我调用get on a future时,它不会返回所需的HttpResponse。如果我使用重载的get()方法,它将一直等待,直到超过超时或永远。我想这是因为try/resource没有正确发布。
如何改进给定的方法/代码以便能够正确使用:方法正文中包含的try/资源结构的未来?
更新:
这是maven依赖性:
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpasyncclient</artifactId>
<version>4.1.1</version>
<scope>test</scope>
</dependency>
尝试使用资源将在收到响应之前关闭异步客户端。
您可能希望通过将来传递给执行调用的回调来关闭异步客户端。
public static Future<HttpResponse> sendAsyncGet(String uri) throws IOException {
final CloseableHttpAsyncClient asyncHttpClient;
asyncHttpClient = HttpAsyncClients.createDefault();
asyncHttpClient.start();
return asyncHttpClient.execute(new HttpGet(uri), new FutureCallback<HttpResponse>() {
private void close() {
try {
asyncHttpClient.close();
} catch (IOException e) {
e.printStackTrace();
}
}
@Override
public void completed(HttpResponse response) {
close();
System.out.println("completed");
}
@Override
public void failed(Exception e) {
close();
e.printStackTrace();
}
@Override
public void cancelled() {
close();
System.out.println("cancelled");
}
});
}
我试图在JPanel上显示图片,但一直出现错误: Java语言lang.IllegalArgumentException:input==null! 我不明白发生了什么。 这是我正在使用的代码: 这只会导致我得到错误! 堆栈跟踪产生以下结果: 我如何解决这个问题?我已经检查了图像的位置,并且从不同的位置尝试,总是得到相同的错误! 我正在使用Netbean IDE。
这很奇怪,因为我有这样的路由:,它根本不工作,它不断返回
我实现了一个try-catch块。 我试图用一种特定的方式实现捕捉块,但是它不太好用。如果输入不是整数,它应该重复并返回到try块。它只工作一次,但更多。 你能给我一些帮助吗?非常感谢。
考虑来自Java文档的以下代码。 根据Java文档, 在示例readFirstLineFromFile中,如果从try块和try with resources语句抛出异常,则方法readFirstLineFromFile抛出从try块抛出的异常;禁止从try with resources块引发的异常。 另一方面,也提到了 由于BufferedReader实例是在try with resource语
问题内容: 我已经搜索了可能的解决方案。并且我尝试了循环以及mysql_fetch_assoc和mysql_fetch_array的变体,但我仍然遇到资源ID#5:0:错误。 这是我认为会产生错误的代码。 问题答案: “资源ID#5:0”不是错误。这意味着您试图而不是尝试使用变量,例如对于fetch_assoc 使用$ row [column],对于fetch_row使用$ row [0],对于f