2012-06-23 13 views
5

Tôi đang sử dụng ứng dụng web để nhận nguồn trang. Tôi đã đăng nhập thành công. Sau đó, tôi sử dụng cùng một đối tượng để lấy nguồn trang bằng URL khác nhưng nó hiển thị Ngoại lệ như:Cách lấy trang được xác thực dữ liệu bằng ứng dụng web

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

Đây là mã mà tôi đang sử dụng.

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

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

trên mã chạy thành công và đăng nhập Sau đó tôi đang sử dụng mã này

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

Nhưng tôi đang nhận được ngoại lệ

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

Trang có được trả về một trang HTML hợp lệ không? –

+0

có đây là trang trả về html hợp lệ. – narendra

Trả lời

1

Trong JavaDoc of UnexpectedPage họ nói rằng

Trang chung được trả lại bất cứ khi nào một loại nội dung không mong muốn là được máy chủ trả về.

tôi sẽ tư vấn cho bạn nên kiểm tra các kiểu nội dung của webClient.getPage("url");

+0

có bạn đúng ngoại lệ này xảy ra do loại nội dung không phù hợp. tôi đã vượt qua loại nội dung ứng dụng/json. – narendra

0

Thay vì sử dụng

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

Sử dụng

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

Nó hoạt động tốt với tôi.