【问题标题】:Calling getResponseCode on HttpUrlConnection before writing content throws an IOException在写入内容之前在 HttpUrlConnection 上调用 getResponseCode 会引发 IOException
【发布时间】:2013-10-27 19:58:53
【问题描述】:

我正在尝试实现以下内容:

  1. 打开 POST 连接。
  2. 读取响应代码。
  3. 写入内容。
  4. 读取响应代码。

第二步抛出如下异常:

Caused by: java.io.IOException: content-length promised 345286 bytes, but received 0

我知道“getResponseCode”会关闭写入流,但我需要找到一种在实际写入任何内容之前如何读取响应代码的方法。由于(例如)401 代码,我想跳过将内容写入请求正文 (100 MB) 的过程。

【问题讨论】:

    标签: java android http httpurlconnection


    【解决方案1】:

    HTTP 不是这样工作的。您需要发送完整的请求,然后才能读取响应代码。在您的情况下,您的响应已承诺 345286 字节的请求正文,但您没有发送任何内容。

    正确的做法是:

    1. 打开 POST 连接。
    2. 写入内容。
    3. 读取响应代码。

    如果您想验证服务器是否允许这样做(以避免 401),您可以先添加一个小的 GET 请求来验证身份验证。

    【讨论】:

    • 我害怕那个。感谢您的反馈。
    猜你喜欢
    • 1970-01-01
    • 2014-03-13
    • 1970-01-01
    • 2016-07-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-01-21
    相关资源
    最近更新 更多