2010-11-27 28 views
6

Estoy tratando de usar HtmlUnit para iniciar sesión en mi sitio web local de WordPress, pero parece que tiene un problema de cookies.Java HtmlUnit - no se puede iniciar sesión en wordpress

Eso es ese principio del código:

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

Eso es lo que me pasa en el registro. Alguien tiene una idea? Gracias.

27 de Nov, 2010 12:43:35 PM org.apache.http.client.protocol.ResponseProcessCookies processCookies ADVERTENCIA: Galleta rechazadas: "[versión: 0] [nombre: wordpress_2418eeb845ebfb96f6f1a71ab8c5625a] [valor: +] [domain: localhost] [path:/flowersWp/wp-admin] [expira: viernes 27 de noviembre a las 12:43:35 IST 2009] ". Atributo de ruta ilegal "/ flowersWp/wp-admin". Ruta de origen: "/flowersWp/wp-login.php"

Respuesta

7

cliente Web está utilizando httpclient Apache, por lo que es un problema de HttpClient.

Desde mi experiencia, tiene que ver con las redirecciones. Me he librado de este problema utilizando HttpClient y el registro de mi propio soporte para cookies:

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

Pues bien, en HtmlUnit no tengo acceso directo a httpclient, pero estoy pensando en cambiar su código fuente para hacerlo, ya que necesito conectarme a WordPress con soporte de JavaScript.

+0

gracias por responder ... – Ron

+0

Sí este código podría ser bueno para HttpClient pero también quiero tener que trabajar en HtmlUnit ... :) – Ron

+0

Avísame en caso de que llegues allí;) – Ron

0

debo señalar que en HttpClient 4+, que tenía que hacer lo siguiente:

 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(); 
Cuestiones relacionadas