首页 文章

在读取之前,HttpURLConnection返回的InputStream中的数据在哪里存储?

提问于
浏览
2

我正在编写一个使用HttpURLConnection下载一些数据的Android应用程序 . getInputStream()方法返回一个可以从中读取数据的InputStream . 在我从这个流中读取数据之前存储的数据在哪里?是全部下载并且网络堆栈正在处理它吗?或者是否仍然需要从服务器检索数据?我可以关闭连接并仍然从InputStream中读取吗?我的问题是在性能和在数据很大的情况下做出负责任的事情 .

1 回答

  • 2

    在从此流中读取之前,数据存储在哪里?

    (我不知道 . 你必须阅读源代码 . )

    是否全部下载并且网络堆栈正在处理它?

    不,这是一个流 . 数据到达字节流,您可以从流中读取 .

    或者是否仍然需要从服务器检索数据?

    是的,这是正常情况,特别是当有效负载超过几千字节时 .

    我可以关闭连接并仍然从InputStream中读取吗?

    简答:不 .

    你的意思是从 HttpURLConnection 调用 disconnect() ?不确定是否' s possible but I wouldn' t那样做 . 它表示您不希望在不久的将来发出后续请求 . 这可能意味着连接将在物理上关闭 .

    或者你的意思是打电话给 InputStream.close() ?当你尝试从封闭的流中读取时,我会得到某种 IllegalStateExceptionIOException .


    通常 HttpURLConnection 是您的应用程序的不错选择 . 如果您遇到任何问题,可以查看这个(不完整的)list of libraries and helpers,您可以在Android上执行HTTP请求时使您的生活更轻松 . 也许你可以利用android.app.DownloadManager .

相关问题