2

htmlunit を使用して、匿名性のためにウェブサイトと tor にリクエストを送信しています。しかし、私は得ています

ターゲット サーバーが例外を応答できませんでした。Googleで検索したところ、次のコードが見つかりました。

HttpMethodRetryHandler myretryhandler = new HttpMethodRetryHandler() {
    public boolean retryMethod(
        final HttpMethod method, 
        final IOException exception, 
        int executionCount) {
        if (executionCount >= 5) {
            // Do not retry if over max retry count
            return false;
        }
        if (exception instanceof NoHttpResponseException) {
            // Retry if the server dropped connection on us
            return true;
        }
        if (!method.isRequestSent()) {
        // Retry if the request has not been sent fully or
        // if it's OK to retry methods that have been sent
        return true;
    }
    // otherwise do not retry
    return false;
    }
};

GetMethod httpget = new GetMethod("http://www.whatever.com/");
httpget.getParams().
setParameter(HttpMethodParams.RETRY_HANDLER, myretryhandler);
try {
    client.executeMethod(httpget);
    System.out.println(httpget.getStatusLine().toString());
} finally {
    httpget.releaseConnection();
}

ただし、htmlunit でこれを行う方法が見つかりませんでした。どうすればこれを達成できますか?

4

2 に答える 2

2

提供されているコードはHttpClientサンプルです。htmlunitを使用する場合は、サイトhttp://htmlunit.sourceforge.net/ を確認してください。これらのスニペットを使用すると、リクエストを送信(投稿?)できるはずです。

WebClient client = new WebClient(BrowserVersion.FIREFOX_3_6);
client.setTimeout(60000);
client.setRedirectEnabled(true);
client.setJavaScriptEnabled(true);
client.setThrowExceptionOnFailingStatusCode(false);
client.setThrowExceptionOnScriptError(false);
client.setCssEnabled(false);
client.setUseInsecureSSL(true);

    HtmlPage page = null;
    try {
        page = client.getPage("http://www.whatever.com");
    } catch (Exception e) {
        // TODO Auto-generated catch block
    }
    if (page.getWebResponse().getStatusCode() == 404) {
        System.out.println("Page not found");
    }

    // Post a request
    WebRequest request = new WebRequest(new URL("http://www.whatever.com/post_url"));
    request.setHttpMethod(HttpMethod.POST);
    List<NameValuePair> params = new ArrayList<NameValuePair>();
    params.add(new NameValuePair("login", userLogin));
    params.add(new NameValuePair("pass", userPassword));
    request.setRequestParameters(params);

    page = client.getPage(request);
于 2012-07-03T18:25:29.323 に答える
0
    final WebClient webClient = new WebClient(BrowserVersion.FIREFOX_45);
    webClient.getOptions().setTimeout(20000);
    webClient.getOptions().setThrowExceptionOnScriptError(false);
    webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
    webClient.getOptions().setCssEnabled(false);
    webClient.getOptions().setJavaScriptEnabled(true);
    webClient.getOptions().setUseInsecureSSL(true);
    webClient.getOptions().setRedirectEnabled(true);

    webClient.setConfirmHandler(new ConfirmHandler() {
        public boolean handleConfirm(Page page, String message) {
            return true;
        }
    });

    String binary = DatatypeConverter.printBase64Binary(auth.getBytes());
    webClient.addRequestHeader("Authorization", "Basic " + binary);

    //get General page
    final HtmlPage page = webClient.getPage("http://adress");
于 2017-07-06T13:11:17.607 に答える