HtmlUnit 2.17 имеют проблемы с Java 7

My Этот код работает с Java6, но не с Java7. Я использовал оба HtmlUnit2.12 и HtmlUnit2.17, ничего не работает. Пожалуйста, предложите, что мне здесь не хватает?

Из Java7 я получаю это исключение: java.net.SocketTimeoutException: чтение истекло

import java.io.IOException;
import java.net.MalformedURLException;

import com.gargoylesoftware.htmlunit.BrowserVersion;
import com.gargoylesoftware.htmlunit.FailingHttpStatusCodeException;
import com.gargoylesoftware.htmlunit.NicelyResynchronizingAjaxController;
import com.gargoylesoftware.htmlunit.WebClient;
import com.gargoylesoftware.htmlunit.html.HtmlPage;

public class Test {
    public static void main(String[] args) throws FailingHttpStatusCodeException, MalformedURLException, IOException {
        String url = "http : / / kellyserviceshk . force . com / careers";
        String content = fetchPage(url, "firefox", 30000, true);
        System.out.println(content);
    }

    private static String fetchPage(String url, String browser, long delayinmillis, boolean javaScriptEnable) {
        WebClient webClient = new WebClient(BrowserVersion.FIREFOX_17);
        webClient.getOptions().setCssEnabled(false);
        webClient.getOptions().setThrowExceptionOnScriptError(false);
        webClient.getOptions().setThrowExceptionOnFailingStatusCode(false);
        webClient.getOptions().setUseInsecureSSL(true);
        webClient.getCookieManager().setCookiesEnabled(true);
        webClient.getOptions().setJavaScriptEnabled(javaScriptEnable);
        webClient.setAjaxController(new NicelyResynchronizingAjaxController());

        String content="";
        try {               
            HtmlPage page = webClient.getPage(url);
            webClient.waitForBackgroundJavaScript(delayinmillis);
            content = page.asXml();

        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            if(webClient!=null){
                webClient.closeAllWindows();
                webClient=null;
            }

        }
        return content;
    }

}

При изменении HtmlUnit2.17 я использовал BrowserVersion как FIREFOX_38, а не FIREFOX_17. Какие изменения я должен сделать?

1 ответ

Вы можете попытаться определить время ожидания:

webClient.getOptions().setTimeout(0); // zero for an infinite wait. (time in milliseconds)

Время ожидания по умолчанию составляет 90 секунд (от 0 до HtmlUnit-2.11).

Другие вопросы по тегам