获取HTTP响应代码是否意味着已下载正文?

时间:2015-10-23 21:02:32

标签: java android network-programming http-headers httpresponse

我试图在Android应用中测量下载时间平均值,并遇到了一个有趣的难题。目前,在执行我的HTTP请求的方法中,我首先

statusCode

以及之后,在检查urlConnection.getInputStream()后,使用getResponseCode()读取要提交的相关信息。

为了测量下载时间,我将代码包裹在getInputStream()行周围,认为为了获得响应代码,操作系统必须已经下载了完整的响应(标题和消息正文)并缓存了它。我相信InputStream会将getResponseCode()返回到应用可能继续阅读的响应的本地缓存。

然而,在与同事讨论时,提出了另一种观点,认为一旦Java / Android获取了响应代码和标题,他们就不会查询文件的其余部分,直到我明确地从InputStream开始读取(所以我从InputStream中获取的数据是从服务器实时发送的。)

这些观点中哪些(如果有的话)反映了实际的实施?

Relevant Android Source, if necessary

编辑:以下是Android SDK中public int getResponseCode() throws IOException { // Call getInputStream() first since getHeaderField() doesn't return // exceptions getInputStream(); String response = getHeaderField(0); if (response == null) { return -1; } response = response.trim(); int mark = response.indexOf(" ") + 1; if (mark == 0) { return -1; } int last = mark + 3; if (last > response.length()) { last = response.length(); } responseCode = Integer.parseInt(response.substring(mark, last)); if (last + 1 <= response.length()) { responseMessage = response.substring(last + 1); } return responseCode; } 的代码

$id

0 个答案:

没有答案