2

接続がリセットされた後、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) で再試行回数を無効または指定するにはどうすればよいですか?

4

1 に答える 1

2

クラスがどのように構成されているかという理由で、私はこれに取り組んできました。私は 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も調べています。これは、特定の例外に必要なものである可能性があります。

于 2012-09-28T03:20:02.640 に答える