我一直在尝试寻找解决方法近 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 文件的方式存在错误,早在 2002 年就有报告(!)。看来 Java 仍然有这个错误,唯一的解决方法是告诉 HttpUnit 不接受 gzip 编码的数据,如下所示:
WebConversation.getClientProperties().setAcceptGzip(false);
不幸的是,这是我做不到的。为了使登录成功,我需要启用 gzip,否则我只会被重定向到通用主页(没有登录)。
我怀疑完成这项工作的唯一方法是更改 HttpUnit 的源代码并在其 gzip 解析中处理 EOF 异常。我迫切需要帮助。有人对此有解决方案吗?
如果没有,那么您能否建议一些在 Java 中相当简单的 API,例如 HttpUnit,用于填写表单和登录等任务。