【问题标题】:Why -1 in inputstream represents end of http response为什么输入流中的-1代表http响应结束
【发布时间】:2017-05-10 04:05:08
【问题描述】:

在 Android 文档中:https://developer.android.com/reference/java/net/HttpURLConnection.html 我们可以发现:-1 是 inputstream 的结尾,这意味着我们到达了 http 响应的结尾

getContentLength() 返回传输的字节数,不能用于预测可以从 getInputStream() 读取压缩流的字节数。相反,读取该流直到它耗尽,即当 read() 返回 -1 时。

为什么-1可以代表http响应

【问题讨论】:

  • All InputStreams 使用该约定。

标签: java android http


【解决方案1】:

-1 不是特定于 HTTP 处理的,实际上每个 InputStream 都会在 EOF 时从 read() 返回 -1,因此每次使用时都必须处理它。

如果您在此处有文本并且想要简化代码,您可以通过 InputStreamReader 将代码包装在 Reader 中,然后在 BufferedReader 中包装,然后您可以在循环中调用 readLine(),直到它返回 null。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-07-05
    • 2014-01-06
    • 2016-01-29
    • 2018-07-08
    • 1970-01-01
    • 1970-01-01
    • 2018-05-18
    • 2020-11-13
    相关资源
    最近更新 更多