2010-11-27 5 views
6

J'essaie d'utiliser HtmlUnit pour me connecter à mon site WordPress local, mais il semble y avoir un problème de cookies.Java HtmlUnit - impossible de se connecter à wordpress

C'est que début du code:

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

C'est ce que je reçois dans le journal. Quelqu'un a une idée? Merci.

27 novembre 2010 12:43:35 org.apache.http.client.protocol.ResponseProcessCookies processCookies AVERTISSEMENT: Cookie rejeté: « [Version: 0] [nom: wordpress_2418eeb845ebfb96f6f1a71ab8c5625a] [valeur: +] [domaine: localhost] [chemin:/flowersWp/wp-admin] [date d'expiration: Fri Nov 27 12:43:35 IST 2009] ". Attribut de chemin illégal "/ flowersWp/wp-admin". Chemin d'origine: "/flowersWp/wp-login.php"

Répondre

7

WebClient utilise httpclient apache, il est donc un problème de HttpClient. D'après mon expérience, il s'agit de redirections. J'ai réussi à se débarrasser de ce problème en utilisant HttpClient et enregistrer mon propre support cookie:

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

Eh bien, dans HtmlUnit Je n'ai pas accès direct à httpclient, mais je pense à changer son code source pour le faire, comme je dois me connecter à wordpress avec le support JavaScript.

+0

Merci pour la réponse ... Ouais – Ron

+0

ce code pourrait être bon pour HttpClient mais je veux aussi le faire travailler sur HtmlUnit ... :) – Ron

+0

Dites-moi au cas où vous y arriver;) – Ron

0

Je dois noter que HttpClient 4+, je devais faire ce qui suit:

 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(); 
Questions connexes