我希望连接重置后不会再次执行 HtmlUnit 中的 Web 请求。以下异常消息显示正在重试连接:
INFO: I/O exception (java.net.SocketException) caught when connecting to the target host: Connection reset
* * org.apache.http.impl.client.DefaultRequestDirector tryConnect
INFO: Retrying connect
那么如何在 HtmlUnit (java) 中禁用或指定重试次数呢?
由于课程的结构,我一直在研究这个问题。我不是 Java 专家,但它可能会对你有所帮助,因为我用 Google 搜索了好几天,但没有结果。我不确定我们是否遇到同样的问题,但我在集成测试中偶尔会遇到“org.apache.http.NoHttpResponseException:目标服务器无法响应”,并且正在对此进行测试,希望它能解决。
这可能是一个糟糕的方法,并且没有涵盖所有切入点,但也许它对您有用。
使用名为 RetryHttpWebConnection 的类对 HttpWebConnection 进行子类化并添加以下覆盖:
@Override
protected AbstractHttpClient createHttpClient() {
AbstractHttpClient client = super.createHttpClient();
// Set it to do some retrying in case of closed connection during test.
client.getParams().setParameter(HttpMethodParams.RETRY_HANDLER,
new DefaultHttpMethodRetryHandler(5, false));
return client;
}
子类 WebClient 并在子类的构造函数中执行以下操作:
// Override with new web connection that will do retries
// to avoid test failures due to network issues.
setWebConnection(new RetryHttpWebConnection(this));
编辑:我也在研究http://pastebin.com/nmmRYqKN http://pastebin.com/nmmRYqKN,这可能更适合我的特殊例外情况。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)