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

时间:2014-07-25 18:22:16

标签: java android http inputstream httpurlconnection

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

1 个答案:

答案 0 :(得分:2)

  

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

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

  

是否全部下载并且网络堆栈正在处理它?<​​/ p>

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

  

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

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

  

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

简短回答:不。

您的意思是从disconnect()致电HttpURLConnection?不确定是否可能,但我不会这样做。它表示您不希望在不久的将来发出后续请求。这可能意味着连接将在物理上关闭。

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


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