我试图寻找类似的问题,但找不到任何类似我的问题的解决方案:
我使用以下代码从HttpUrlConnection中读取:
public static BufferedReader getConnectionReader(HttpURLConnection con, String url)
throws Exception {
con = (HttpURLConnection) new URL(url).openConnection();
con.connect();
if (cm != null) {
cm.storeCookies(con);
}
if (con.getHeaderField("Content-Encoding") != null
&& con.getHeaderField("Content-Encoding").equalsIgnoreCase("gzip")) {
return new BufferedReader(new InputStreamReader(new GZIPInputStream(con.getInputStream())));
} else
return new BufferedReader(new InputStreamReader(con.getInputStream()));
}
阅读按以下方式进行:
HttpURLConnection con = null;
reader = Utils.getConnectionReader(con, "http://www.site.com/page.html");
String line = null;
while ((line = reader.readLine()) != null) {
log.info(line);
}
有时我得到上述例外:
java.io.EOFException:ZLIB输入流的意外结束
当我可以的时候,我会抓住这个异常并重试该操作 - 成功。
问题是我不知道导致此异常的原因是什么。 它是随机发生的。
我想相信这是一个网络问题。
有人找到了完全解决这个问题的方法吗?
谢谢!
答案 0 :(得分:0)
你使用的方法对于像GZip这样的二进制格式不太理想,我假设你只是为了测试而这样做?除此之外,还有HTTPURLConnection的错误,代码中没有太多可能导致问题的原因。我建议使用字节缓冲区交换进行读取,至少要将其作为可能的错误来源消除。