在写入内容之前在HttpUrlConnection上调用getResponseCode会抛出IOException

时间:2013-10-27 11:45:30

标签: java android http httpurlconnection

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

  1. 打开POST连接。
  2. 阅读回复代码。
  3. 撰写内容。
  4. 阅读回复代码。
  5. 第二步抛出以下异常:

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

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

1 个答案:

答案 0 :(得分:1)

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

正确的方法是执行以下操作:

  1. 打开POST连接。
  2. 撰写内容。
  3. 阅读回复代码。
  4. 如果您想验证服务器是否允许这样做(以避免401s),您可以先添加一个小的GET请求来验证身份验证。