【发布时间】:2011-02-17 01:58:27
【问题描述】:
我目前的问题与this one非常相似。
我有一个downloadFile(URL) 函数,它创建一个新的HttpURLConnection,打开它,读取它,返回结果。当我在同一个 URL 上多次调用此函数时,第二次几乎总是返回响应代码 -1(但不会抛出异常!!!)。
top answer in that question 非常有帮助,但我想了解一些事情。
那么,如果将 http.keepAlive 设置为 false 可以解决问题,那么它究竟表明了什么?服务器以违反 http 协议的方式响应?或者更有可能,我的代码在某种程度上违反了协议?痕迹会告诉我什么?我应该寻找什么?
这是怎么回事:
你需要从错误中读取所有内容 溪流。否则,它会 混淆下一个连接,这就是 -1 的原因。
这是否意味着如果响应是某种类型的错误(这将是什么响应代码?),流必须被完全读取?另外,每次我尝试一个 http 请求时,我基本上都是在创建一个新连接,然后在最后disconnect()ing 它。
但是,就我而言,我没有得到 401 或其他什么。它总是 200。但我的第二次连接几乎总是失败。这是否意味着我应该读取其他一些我没有读取的数据(以必须完全读取错误流的类似方式)?
请帮忙解释一下?我觉得我缺少一些基本的 http 协议理解。
PS 如果我只是使用 Apache HttpClient,我是否不必处理所有这些协议细节?它会为我处理好一切吗?
【问题讨论】:
标签: java android httpurlconnection