Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/231.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java HttpEntity的ConsumerContent()的用法_Java_Android_Httpclient_Android Networking - Fatal编程技术网

Java HttpEntity的ConsumerContent()的用法

Java HttpEntity的ConsumerContent()的用法,java,android,httpclient,android-networking,Java,Android,Httpclient,Android Networking,类或Android中的consumeContent()的用途是什么 什么时候使用它?它会有副作用吗 我正在尝试修复一个应用程序中的一个bug,该应用程序使用HttpClient向服务器发出请求,有时,如果某个特定请求失败,它将随后失败,尽管互联网正常。应用程序在输入流读取结束时调用此方法。正如您在javadoc中看到的,该方法已被弃用。不要用它。它依赖于实现。但应按照以下说明实施: 调用此方法以指示此实体的内容是 不再需要了。所有实体实现都将发布 由于此方法调用而分配的所有资源 相反,您应该使用

类或Android中的
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
实现类的实现。