我正在使用CloseableHttpResponse(来自apache-httpclient-4.5.3),但我不确定我是否正确使用了它,我看到了一个答案,没有投票支持使用EntityUtils。最终消费
:
CloseableHttpResponse response1 = httpclient.execute(httpGet);
try {
System.out.println(response1.getStatusLine());
} finally {
EntityUtils.consume(response1.getEntity());
CloseableHttpClient
是抽象的,没有可调用的close方法,尽管在这个回答中使用了:
CloseableHttpResponse response = httpclient.execute(httpget);
try {
//do something
} finally {
response.close();
}
目前,我正在使用try with resources,用于send方法内部的CloseableHttpClient
和CloseableHttpResponse
。
我是否缺少任何打开的资源或以错误的方式使用它?
private CloseableHttpResponse send()
throws URISyntaxException, UnsupportedEncodingException, IOException, ClientProtocolException {
URIBuilder uriBuilder = new URIBuilder(BASE_URL);
HttpHost target = new HttpHost(uriBuilder.getHost(), uriBuilder.getPort(), uriBuilder.getScheme());
HttpPost post = new HttpPost(uriBuilder.build());
try (CloseableHttpClient httpClient = HttpClients.custom().build(); CloseableHttpResponse response = httpClient.execute(target, post)) {
return response;
}
您可以使用try(资源)来避免finally
try(CloseableHttpResponse response=httpclient.execute(httpGet)){…}
在这里的文档中已经详细说明了这一点
引用文档中的伪代码这里是分配/取消分配CloseableHttpClient
实例的典型方法:
try (CloseableHttpClient httpclient = HttpClients.createDefault()) {
<...>
}
这同样适用于可关闭的httpresponse
:
try (CloseableHttpResponse response = httpclient.execute(httpget)) {
<...>
}
现在,关于CloseableHttpClient
中的close方法CloseableHttpClient
是一个抽象类,它实现了Closeable
接口。也就是说,尽管它本身没有close
方法,但是需要扩展它的类来实现close
方法。一个类是InternalHttpClient
。您可以查看源代码以了解详细信息。
在Java7之前,需要显式关闭:
CloseableHttpClient httpclient = HttpClients.createDefault();
try {
<...>
} finally {
httpclient.close();
}
CloseableHttpResponse response = httpclient.execute(httpget);
try {
<...>
} finally {
response.close();
}
当我使用CloseableHttpClient和do Execute方法时,它在第一次正常工作,但之后从未成功。它将引发表示“连接池关闭”的异常 有人说是因为我还没有关闭客户端有人说是httpClient 4.3中的bug 我的项目不存在上述问题,但仍然无法正常工作
我经常看到使用套接字的服务器程序的示例代码。 (为了简单起见,这里我不检查函数的返回值,如socket()或bind()等。)
问题内容: 我正在使用Play编写一个部署在Tomcat中的webapp。因为该应用程序不会处理大量数据,所以我在Hibernate中使用默认的H2数据库。当我想部署新版本的应用程序时,我关闭了tomcat,擦除了旧的webapp和WAR,添加了新的WAR,然后开始备份。 直到几天前,当我添加数据库组件时,它一直有效。现在,我经常无法重新部署该应用程序。当我删除旧目录时,它将使用以下结构自动重新生
我有一个流应用程序,具有以下驱动程序代码,用于实时消息转换。 执行几分钟后,应用会引发以下异常,然后不会在流中前进。 我试图清除目录并重新启动应用程序,但再次抛出相同的异常。我注意到的一件事是,该应用程序在转换所有积压消息之前工作正常,但在处理一些新消息后引发异常! 有时它也会抛出下面未被捕获的异常。 引发这些异常(其中一个)后,应用仍在运行,但未在流中前进。 处理这些错误的正确方法是什么?。是否
问题内容: 我想在Java中实现SSL代理。我基本上打开了两个套接字,并运行了两个线程,这些线程将写入他们从中读取的内容,反之亦然。每个线程如下所示: 每个线程只会关闭输入套接字,因此最终两个套接字都会关闭。 但是,如果我想使用an 怎么办?似乎那里不支持这些方法。这是我得到的例外。 我想出的是: 每当套接字结束时,我都必须捕获并忽略套接字末尾异常。 我的问题是: 如果不受支持,我怎么会从那里得到
4.5 正确的关机方法 OK!大概知道开机的方法,也知道基本的指令操作,而且还已经知道线上查询了,好累呦! 想去休息呢!那么如何关机呢?我想,很多朋友在DOS的年代已经有在玩计算机了! 在当时我们关掉DOS的系统时,常常是直接关掉电源开关,而 Windows 在你不爽的时候,按着电源开关四秒也可以关机!但是在Linux则相当的不建议这么做! Why?在 Windows (非 NT 主机系统) 系统