【发布时间】:2012-05-29 19:45:50
【问题描述】:
我已经连续近 6 个小时试图找到解决此问题的方法,但无济于事。
我有一个简单的 HttpUnit 程序,可以登录网站。问题是当我最终提交登录表单时出现此错误:
Exception in thread "main" java.io.EOFException: Unexpected end of ZLIB input stream
at java.util.zip.InflaterInputStream.fill(InflaterInputStream.java:223)
at java.util.zip.InflaterInputStream.read(InflaterInputStream.java:141)
at java.util.zip.GZIPInputStream.read(GZIPInputStream.java:92)
at com.meterware.httpunit.WebResponse.readFromStream(WebResponse.java:967)
..and so on..
在 JDK 管理 gzip 文件的方式中出现 a bug,早在 2002 年就有报道(!)。看来 Java 仍然有这个错误,唯一的解决方法是告诉 HttpUnit 不接受 gzip 编码的数据,如下所示:
WebConversation.getClientProperties().setAcceptGzip(false);
不幸的是,这是我做不到的。要成功登录,我需要启用 gzip,否则我只会被重定向到通用主页(未登录)。
我怀疑完成这项工作的唯一方法是更改 HttpUnit 的源代码并在其 gzip 解析中处理 EOF 异常。我迫切需要帮助。有人对此有解决方案吗?
如果没有,您能否推荐一些 Java 中相当简单的 API,例如 HttpUnit,用于填写表单和登录等任务。
【问题讨论】:
标签: java unit-testing gzip zlib