我正在向HTTP服务器发送HTTP请求,该服务器合法地返回HTTP响应代码= 200(空)的空白响应。如何避免来自HttpURLConnection的空HTTP响应的EOFException?
但是,这将导致明显的线下抛出EOFException
:
InputStream responseStream = httpURLConnection.getInputStream();
final String contentEncoding = this.connection.getContentEncoding();
if ("gzip".equalsIgnoreCase(contentEncoding)) {
responseStream = new GZIPInputStream(responseStream); // throws EOFException
}
有可能是防止这种明显的方式,但我不能找到它。在创建GZIPInputStream之前,我是否应该检查类似connection.getContentLength() > 0
或responseStream.available() > 0
?这些看起来都不太对,我在示例代码片段中没有遇到类似的东西...
非常感谢 - 看起来像getContentLength()那么。我只关心一点,我不想引入可能排除有效响应的检查 - 您是否知道内容长度是否始终保证由服务器正确设置? – 2013-02-11 22:23:42
@SteveChambers内容长度也许是HTTP 1.1中所有内容中最重要的标题。如果设置不正确,服务器会严重损坏,浏览器也无法使用。 – EJP 2013-02-11 22:41:50