2010-11-27 15 views
6

HtmlUnitを使用してローカルのWordPressウェブサイトにログインしようとしていますが、Cookieの問題があるようです。Java HtmlUnit - wordpressにログインできません

コードの初めです:

WebClient webClient = new WebClient(); 
HtmlPage loginPage = webClient.getPage("http://localhost/flowersWp/wp-admin"); 
HtmlForm form = loginPage.getFormByName("loginform"); 

私は、ログに何を得るのです。誰でもアイデアがありますか?おかげさまで

2010年11月27日12時43分三十五秒PM org.apache.http.client.protocol.ResponseProcessCookiesのprocessCookies WARNING:クッキーを拒否:「[バージョン:0] [名: wordpress_2418eeb845ebfb96f6f1a71ab8c5625a] [値: +] [ドメイン: ローカルホスト] [パス:/ flowersWp/wp-admin] [expiry:Fri Nov 27 12:43:35 IST 2009]不正なパス属性 "/ flowersWp/wp-admin"。起源のパス: "/flowersWp/wp-login.php"

答えて

7

Webクライアントは、ApacheのHTTPClientを使用しているので、HttpClientを問題です。

私の経験から、リダイレクトと関係しています。 、HtmlUnitに私はHTTPClientのに直接アクセスできません、

// Create a local instance of cookie store 
    CookieStore cookieStore = new BasicCookieStore(); 

    // Bind custom cookie store to the local context 
    httpclient.setCookieStore(cookieStore); 
    CookieSpecFactory csf = new CookieSpecFactory() { 
     public CookieSpec newInstance(HttpParams params) { 
      return new BrowserCompatSpec() { 
       @Override 
       public void validate(Cookie cookie, CookieOrigin origin) 
       throws MalformedCookieException { 
       // Oh, I am easy. 
       // Allow all cookies 
       log.debug("custom validate"); 
       } 
      }; 
     } 
    }; 
    httpclient.getCookieSpecs().register("easy", csf); 
    httpclient.getParams().setParameter(
     ClientPNames.COOKIE_POLICY, "easy"); 

まあ、私はそうするように、そのソースコードを変更することを考えています:私はHttpClientをを使用し、私自身のクッキーのサポートを登録し、この問題の解消を得ています私はJavaScriptをサポートしてwordpressに接続する必要があります。

+0

感謝を... – Ron

+0

うん、このコードは、HttpClientをのために良いかもしれませんが、私はまた、それが働いていたいですHtmlUnit ... :) – Ron

+0

あなたがそれを作った場合に教えてください;) – Ron

0

私はHttpClientを4+で、私は次の操作を行う必要があったことに注意する必要があります。返信用

 CookieSpecProvider csf = new CookieSpecProvider() { 
      @Override 
      public CookieSpec create(HttpContext context) 
      { 
       return new BrowserCompatSpec() { 
        @Override 
        public void validate(Cookie cookie, CookieOrigin origin) 
         throws MalformedCookieException 
        { 
         // Allow all cookies 
        } 
       }; 
      } 
     }; 

     RequestConfig requestConfig = RequestConfig.custom() 
      .setCookieSpec("easy") 
      .build(); 

     httpclient = HttpClients 
      .custom() 
//   .setHostnameVerifier(SSLConnectionSocketFactory.ALLOW_ALL_HOSTNAME_VERIFIER) 
      .setDefaultCookieStore(cookieStore) 
      .setDefaultCookieSpecRegistry(RegistryBuilder.<CookieSpecProvider>create() 
               .register(CookieSpecs.BEST_MATCH, csf) 
               .register(CookieSpecs.BROWSER_COMPATIBILITY, csf) 
               .register("easy", csf).build()) 
      .setDefaultRequestConfig(requestConfig) 
//   .setSSLSocketFactory(sslsf) 
      .build(); 
関連する問題