Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/397.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
HtmlUnit 2.17与Java 7存在问题_Java_Web Crawler_Htmlunit_Htmlunit Driver - Fatal编程技术网

HtmlUnit 2.17与Java 7存在问题

HtmlUnit 2.17与Java 7存在问题,java,web-crawler,htmlunit,htmlunit-driver,Java,Web Crawler,Htmlunit,Htmlunit Driver,我的这段代码适用于Java6,但不适用于Java7。 我同时使用了HtmlUnit2.12和HtmlUnit2.17,没有任何效果。请告诉我这里缺少什么 从Java7中我得到了这个异常:java.net.SocketTimeoutException:Read timeout import java.io.IOException; import java.net.MalformedURLException; import com.gargoylesoftware.htmlunit.Browser

我的这段代码适用于Java6,但不适用于Java7。 我同时使用了HtmlUnit2.12和HtmlUnit2.17,没有任何效果。请告诉我这里缺少什么

从Java7中我得到了这个异常:java.net.SocketTimeoutException:Read timeout

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。
我应该做什么改变

您可以尝试定义超时:

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

默认超时为90秒(HtmlUnit-2.11之前为0)。

只是观察:根据您的情况,更改此选项可能会有危险。我遇到了与OP相同的问题。在我
.setTimeout(0)
之后,我的一个测试的运行时间从几分钟变为几小时!