2012-06-23 11 views
5

Sto utilizzando il client Web per ottenere l'origine della pagina. Ho effettuato l'accesso correttamente. Dopo di che, io uso lo stesso oggetto per ottenere sorgente della pagina utilizzando diversi URL, ma sta mostrando un'eccezione come:Come ottenere una pagina autenticata dai dati utilizzando il client Web

java.lang.ClassCastException: com.gargoylesoftware.htmlunit.UnexpectedPage cannot be cast to com.gargoylesoftware.htmlunit.html.HtmlPage 

Questo è il codice che sto usando.

  forms = (List<HtmlForm>) firstPage.getForms(); 
     form = firstPage.getFormByName(""); 

     HtmlTextInput usernameInput = form.getInputByName("email"); 
     HtmlPasswordInput passInput = form.getInputByName("password"); 
     HtmlHiddenInput redirectInput = form.getInputByName("redirect"); 
     HtmlHiddenInput submitInput = form.getInputByName("form_submit"); 

     usernameInput.setValueAttribute(username); 
     passInput.setValueAttribute(password); 

     //Create Submit Button 
     HtmlElement button = firstPage.createElement("button"); 
     button.setAttribute("type", "submit"); 
     button.setAttribute("name", "submit"); 
     form.appendChild(button); 
     System.out.println(form.asXml()); 
     HtmlPage pageAfterLogin = button.click(); 

     String sourc = pageAfterLogin.asXml(); 

     System.out.println(pageAfterLogin.asXml()); 

    ///////////////////////////////////////////////////////////////////////// 

sopra il codice in esecuzione con successo ed effettuare il login Dopo di che sto usando questo codice

HtmlPage downloadPage = null;  
downloadPage=(HtmlPage)webClient.getPage("url"); 

Ma io sono sempre delle eccezioni

java.lang.ClassCastException: com.gargoylesoftware.htmlunit.UnexpectedPage cannot be cast to com.gargoylesoftware.htmlunit.html.HtmlPage 
+0

La pagina viene restituita una pagina HTML valida? –

+0

sì, questo è il ritorno della pagina HTML valido. – narendra

risposta

1

All'interno del JavaDoc of UnexpectedPage affermano che

Una pagina generica che viene restituita ogni volta che un tipo di contenuto non previsto è restituito dal server.

vi consiglio di controllare il tipo di contenuto di webClient.getPage("url");

+0

sì, hai ragione, questa eccezione si è verificata perché il tipo di contenuto non corrisponde. stavo passando applicazione/tipo di contenuto JSON. – narendra

0

Invece di usare

HtmlPage downloadPage = null;  
downloadPage=(HtmlPage)webClient.getPage("url"); 

Usa

UnexpectedPage downloadPage = null;  
downloadPage=(HtmlPage)webClient.getPage("url"); 

Ha funzionato bene con me.