AndroidHttpClient 关闭后无法 getEntity().getContent()

标签 android httpclient inputstream

public InputStream getInputStream() {
    AndroidHttpClient client = AndroidHttpClient.newInstance(USERAGENT);
    HttpUriRequest request = new HttpGet(url);
    InputStream in = null;
    try {
        HttpResponse response = client.execute(request);
        in = response.getEntity().getContent();
        return in;
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        client.close();
    }
}

我将此方法放在 Util 类中。 但是当在另一个类中调用 getInputStream() 时,由于 AndroidHttpClient 已关闭,我无法获取 InputSteam。 如果我不关闭 AndroidHttpClient,就会出现“发现泄漏,AndroidHttpClient 已创建且从未关闭”。 这种情况下如何获取内容

最佳答案

例如:

public InputStream getInputStream() {
    AndroidHttpClient client = AndroidHttpClient.newInstance(USERAGENT);
    HttpUriRequest request = new HttpGet(url);
    InputStream in = null;
    try {
        HttpResponse response = client.execute(request);
        return new ByteArrayInputStream(new EntityUtils.toByteArray(response.getEntity()));
    } catch (IOException e) {
        e.printStackTrace();
    } finally {
        client.close();
    }
}

关于AndroidHttpClient 关闭后无法 getEntity().getContent(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9393426/

相关文章:

android - 按钮作为 ListView Android 中的最后一项

android - 在偏好 Activity 上设置不可点击的按钮

android - 如何在 Android Studio 2.3 插桩测试中添加额外的测试运行器参数

c# - Unity3D-可移植HTTP客户端

使用自定义 keystore .jks 文件和密码的 SSL 连接并将请求发送到 URL

c# - 为什么我的 httpresponsemessage 的内容标题没有添加到正确的字段?

java - Properties.load会关闭InputStream吗?

java - onComplete() 在成功下载 pdf (Rxjava) 后永远不会被调用,但在使用 AsyncTask 时可以工作

spring - 如何在 RestController 中缓存 InputStreamResource?

java - 如何读取不同编码函数的文件?