java.io.EOFException:ZLIB输入流意外结束-从HTTP读取
我试着四处寻找类似的问题,但找不到与我的问题类似的解决方案: 我使用以下代码读取HttpUrlConnection:java.io.EOFException:ZLIB输入流意外结束-从HTTP读取,java,http,zlib,Java,Http,Zlib,我试着四处寻找类似的问题,但找不到与我的问题类似的解决方案: 我使用以下代码读取HttpUrlConnection: public static BufferedReader getConnectionReader(HttpURLConnection con, String url) throws Exception { con = (HttpURLConnection) new URL(url).openConnection(); con.connect();
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输入流意外结束
如果可以,我会捕获此异常并重试该操作-成功
问题是,我不知道是什么原因导致此异常弹出。
这是随机发生的
我想相信这是一个网络问题
有人找到了完全解决这个问题的方法吗
谢谢 您使用的方法对于像GZip这样的二进制格式不太理想,我想您这样做只是为了测试?除此之外,还有HTTPURLConnection的bug,代码中没有太多其他可能导致此问题的代码。我建议使用字节缓冲区交换进行读取,至少可以消除这一可能的错误源。感谢您的回复。我使用这段代码来阅读html页面-文本页面。大多数都不是压缩的。关于HttpUrlConnection的bug,你是什么意思?再次感谢。@tzafrir-您正在声明一个空变量con并将其传递到函数中,然后在函数中初始化它。如果您打算使用这个con对象,那么请注意,当控件从函数中返回时,它不会被初始化,因为Java是按值传递的。但是,如果您不打算使用它,那么首先就不需要将其传递到函数中。解决方法是捕获此特定异常并重试请求。我想这是由网络问题引起的。