2013-11-20 17 views
0

我有一个应用程序使用Htmlunit,我需要使用PAC文件,但HtmlUnit显示错误,我不知道为什么。HTMLUNIT中的错误代理自动配置

PAC文件用Javascript编写,扩展名为“.cgi”。

的代码是:

WebClient webClient = new WebClient();

webClient.getOptions().setJavaScriptEnabled(true); webClient.getOptions().setActiveXNative(true); webClient.getOptions().setAppletEnabled(true); webClient.getOptions().setCssEnabled(false); webClient.getOptions().setPopupBlockerEnabled(true); webClient.getOptions().setRedirectEnabled(true); webClient.getOptions().setThrowExceptionOnFailingStatusCode(false); webClient.getOptions().setThrowExceptionOnScriptError(false); webClient.getOptions().setUseInsecureSSL(true);

webClient.setAjaxController(new NicelyResynchronizingAjaxController());

webClient.getOptions().getProxyConfig().setProxyAutoConfigUrl("http://domain/proxy.pac");

HtmlPage currentPage = webClient.getPage(web);

,并且错误是:

Exception in thread "main" java.lang.StackOverflowError at java.io.IOException.<init>(IOException.java:58) at java.io.InterruptedIOException.<init>(InterruptedIOException.java:64) at java.net.SocketTimeoutException.<init>(SocketTimeoutException.java:43) at java.net.SocketInputStream.socketRead0(Native Method) at java.net.SocketInputStream.read(SocketInputStream.java:150) at java.net.SocketInputStream.read(SocketInputStream.java:121) at org.apache.http.impl.io.AbstractSessionInputBuffer.fillBuffer(AbstractSessionInputBuffer.java:160) at org.apache.http.impl.io.SocketInputBuffer.fillBuffer(SocketInputBuffer.java:84) at org.apache.http.impl.io.SocketInputBuffer.isDataAvailable(SocketInputBuffer.java:95) at org.apache.http.impl.AbstractHttpClientConnection.isStale(AbstractHttpClientConnection.java:310) at org.apache.http.impl.conn.ManagedClientConnectionImpl.isStale(ManagedClientConnectionImpl.java:158) at org.apache.http.impl.client.DefaultRequestDirector.execute(DefaultRequestDirector.java:432) at org.apache.http.impl.client.AbstractHttpClient.doExecute(AbstractHttpClient.java:863) at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:72) at com.gargoylesoftware.htmlunit.HttpWebConnection.getResponse(HttpWebConnection.java:167) at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseFromWebConnection(WebClient.java:1281) at com.gargoylesoftware.htmlunit.WebClient.loadWebResponse(WebClient.java:1198) at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:307) at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:376) at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:361) at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseFromWebConnection(WebClient.java:1237) at com.gargoylesoftware.htmlunit.WebClient.loadWebResponseFromWebConnection(WebClient.java:1339) at com.gargoylesoftware.htmlunit.WebClient.loadWebResponse(WebClient.java:1198) at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:307) at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:376) at com.gargoylesoftware.htmlunit.WebClient.getPage(WebClient.java:361)

有错误的更行,但我还没有推。

任何想法?

回答

0
webClient.getOptions().getProxyConfig().setProxyAutoConfigUrl("http://domain/proxy.pac"); 

我觉得上面的问题请检查代理网址这是不正确的。 请先在浏览器中打开它,如果它正确打开,然后将其应用于代码。

+0

此URL是发明。当我检查代理的真实网址时,浏览器使用JavaScript中的代码下载扩展名为“.cgi”的文件。也许这是问题吗? – angelo087

+0

以其他方式,我有一个JavaScript函数的文件(我认为是自动配置代理),扩展名为“cgi”,而不是pac(我不知道这是否正确,因为我不关心代理)。有没有办法将这个配置分配给webClient? :( – angelo087

+0

我可以使用HtmlUnit手动分配PAC文件吗? – angelo087