Java HttpEntity的ConsumerContent()的用法
类或Android中的Java HttpEntity的ConsumerContent()的用法,java,android,httpclient,android-networking,Java,Android,Httpclient,Android Networking,类或Android中的consumeContent()的用途是什么 什么时候使用它?它会有副作用吗 我正在尝试修复一个应用程序中的一个bug,该应用程序使用HttpClient向服务器发出请求,有时,如果某个特定请求失败,它将随后失败,尽管互联网正常。应用程序在输入流读取结束时调用此方法。正如您在javadoc中看到的,该方法已被弃用。不要用它。它依赖于实现。但应按照以下说明实施: 调用此方法以指示此实体的内容是 不再需要了。所有实体实现都将发布 由于此方法调用而分配的所有资源 相反,您应该使用
consumeContent()
的用途是什么
什么时候使用它?它会有副作用吗
我正在尝试修复一个应用程序中的一个bug,该应用程序使用HttpClient向服务器发出请求,有时,如果某个特定请求失败,它将随后失败,尽管互联网正常。应用程序在输入流读取结束时调用此方法。正如您在javadoc中看到的,该方法已被弃用。不要用它。它依赖于实现。但应按照以下说明实施: 调用此方法以指示此实体的内容是 不再需要了。所有实体实现都将发布 由于此方法调用而分配的所有资源 相反,您应该使用
EntityUtils.consume(HttpEntity)
,它是这样实现的
public static void consume(final HttpEntity entity) throws IOException {
if (entity == null) {
return;
}
if (entity.isStreaming()) {
final InputStream instream = entity.getContent();
if (instream != null) {
instream.close();
}
}
}
如有必要,只需关闭底层的InputStream
。正如@Sotirios所建议的,已被弃用,因此请在可行时使用
然后让我们大致讨论一下消费HttpEntity
。使用HttpEntity
可确保分配给该实体的所有资源都被释放。这意味着:
- 底层流被释放
- 如果您的连接是池连接,那么您的连接对象将返回到池中。如果您的连接不是池连接,那么连接管理器将释放有问题的连接对象,并将重点放在处理其他客户端请求上
HttpEntity
正好为您做到这一点
它会有副作用吗
我不知道使用
HttpEntity
有什么副作用,谢谢,但正如我所说,我使用的是Android,它使用的是旧版本的HttpClient,其中consumeContent()没有被弃用,EntityUtils.consumeContent(HttpEntity)不存在@如果您必须使用它,那么请依赖javadoc和它所说的内容。如果您不信任它,那么必须查看您正在使用的HttpEntity
实现类的实现。