2010-11-27 13 views
6

Ich versuche HtmlUnit zu verwenden, um mich auf meiner lokalen Wordpress-Website anzumelden, aber es scheint ein Cookie-Problem zu haben.Java HtmlUnit - kann nicht in WordPress einloggen

, dass dieser Anfang des Codes ist:

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

Das ist, was ich im Protokoll erhalten. Jeder hat eine Idee? Danke.

27. November 2010 12.43.35 org.apache.http.client.protocol.ResponseProcessCookies processCookies WARNUNG: Plätzchen abgelehnt: „[Version: 0] [name: wordpress_2418eeb845ebfb96f6f1a71ab8c5625a] [Wert: +] [domain: localhost] [Pfad:/flowersWp/wp-admin] [Ablauf: Fr 27.11. 12:43:35 IST 2009] ". Ungültiges Pfadattribut "/ flowersWp/wp-admin". Path of origin: "/flowersWp/wp-login.php"

Antwort

7

WebClient wird mit Apache Httpclient, so dass es ein Httpclient Problem.

Aus meiner Erfahrung hat es mit Umleitungen zu tun. Ich habe dieses Problem mit Httpclient losgeworden und meine eigenen Cookie-Unterstützung Registrierung:

// 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"); 

Nun, in Htmlunit ich keinen direkten Zugriff auf Httpclient habe, aber ich denke, den Quellcode zu ändern, dies zu tun, wie ich mit JavaScript-Unterstützung mit WordPress verbinden muss.

+0

Dank ... – Ron

+0

Ja dieser Code könnte für Httpclient gut sein, aber ich möchte auch, es haben arbeiten HtmlUnit ... :) – Ron

+0

Lassen Sie es mich wissen, falls Sie es dort machen;) – Ron

0

ich, dass in Httpclient beachten muss 4+, hatte ich folgendes zu tun: für die Beantwortung

 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(); 
Verwandte Themen