GAE и HtmlUnit 2.9 - получение исключения при jsxGet_cookie - PullRequest
2 голосов
/ 08 июля 2011

Я пытаюсь войти в Google, используя HtmlUnit в приложении в GAE. Тем не менее, я получаю эту ошибку:

Exception invoking jsxGet_cookie

Это потому, что

Caused by: java.lang.IllegalArgumentException: Invalid port: -1
    at org.apache.http.cookie.CookieOrigin.<init>(CookieOrigin.java:58)
    at com.gargoylesoftware.htmlunit.CookieManager.getCookies(CookieManager.java:127)
    at com.gargoylesoftware.htmlunit.javascript.host.html.HTMLDocument.jsxGet_cookie(HTMLDocument.java:638)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:616)
    at com.google.appengine.tools.development.agent.runtime.Runtime.invoke(Runtime.java:100)
    at net.sourceforge.htmlunit.corejs.javascript.MemberBox.invoke(MemberBox.java:172)
    ... 94 more

Это происходит при работе в GAE и на моем компьютере.

Кто-нибудь когда-нибудь видел такую ​​ошибку раньше? Как я могу изменить порт по умолчанию? Есть ли обходные пути?

Ответы [ 2 ]

2 голосов
/ 27 сентября 2012

Измените URL, который вы выбираете, чтобы включить порт 80 по умолчанию. Пример: http://www.cnn.com становится http://www.cnn.com:80. Существует также обходной путь, связанный с переопределением классов, но я предпочитаю уточнить URL.

1 голос
/ 16 декабря 2011

Сначала у меня возникла эта проблема (у меня есть приложение GWT + GAE), и я использовал этот очень простой код, и я получил исключение js cookie и порт: -1 исключение

    WebClient webClient = Holder.get();
    HtmlPage page=null;

    try {
        page = webClient.getPage(url);
        System.out.println("CRAWLER DONE");
    } catch (FailingHttpStatusCodeException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (MalformedURLException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    } catch (IOException e) {
        // TODO Auto-generated catch block
        e.printStackTrace();
    }

     // appengine hack because it's single threaded


    String pageContent = page.asXml();
    webClient.closeAllWindows();
    return pageContent;

затемЯ попробовал следующее,

    webClient.setCssEnabled(false);
    webClient.setThrowExceptionOnFailingStatusCode(false);
    webClient.setThrowExceptionOnScriptError(false);

И это просто чудесным образом сработало.веселит.

...