2012-06-23 7 views
5

Ich benutze Web-Client zum Abrufen der Seitenquelle. Ich habe mich erfolgreich eingeloggt. Danach verwende ich gleiche Objekt für Seite Quelle bekommen andere URL verwenden, aber es zeigt eine Ausnahme wie:So erhalten Sie eine Daten authentifizierte Seite mit Web-Client

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

Dies ist der Code, die ich verwende.

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

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

oben Code läuft erfolgreich und anmelden Danach habe ich diesen Code verwende

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

Aber ich bin immer Ausnahme

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

Wird die Seite eine gültige HTML-Seite zurückgegeben? –

+0

ja dies ist eine gültige html-Seite zurück. – narendra

Antwort

1

Im JavaDoc of UnexpectedPage sie erklären, dass

Eine generische Seite, die zurückgegeben wird, wenn ein unerwarteter Inhaltstyp vom Server zurückgegeben wird.

Ich würde Ihnen raten, dass Sie die Inhalte des Typs überprüfen von webClient.getPage("url");

+0

Ja, Sie haben Recht, diese Ausnahme ist aufgetreten, weil der Inhaltstyp nicht übereinstimmt. Ich habe Application/Json Content-Typ übergeben. – narendra

0

Statt

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

Verwendung von mit

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

es bei mir gut funktioniert.