2012-01-03 26 views
5

Tôi đang sử dụng đơn vị Html để truy cập trang web, điền vào một số biểu mẫu và nhấp vào nút để truy cập trang web tiếp theo. Trang web mới đó, (được gọi là newPage trong mã của tôi) là những gì tôi đang trích xuất nguồn html từ đó.Android: Lỗi CSS khi sử dụng đơn vị HTML & Eclipse

Phương pháp này hoạt động hoàn hảo trong Netbeans (mặc dù nó không đưa ra một số tiền quá nhiều cảnh báo)

import org.jsoup.Jsoup; 

/* Regular (textview, button, etc) imports */ 

import com.gargoylesoftware.htmlunit.BrowserVersion; 
import com.gargoylesoftware.htmlunit.Page; 
import com.gargoylesoftware.htmlunit.WebClient; 
import com.gargoylesoftware.htmlunit.html.HtmlAnchor; 
import com.gargoylesoftware.htmlunit.html.HtmlElement; 
import com.gargoylesoftware.htmlunit.html.HtmlForm; 
import com.gargoylesoftware.htmlunit.html.HtmlPage; 
import com.gargoylesoftware.htmlunit.html.HtmlSubmitInput; 
import com.gargoylesoftware.htmlunit.html.HtmlTextInput; 


     String username = "USERNAME", school = "SCHOOL", userpassword = "PASSWORD"; 
     HtmlElement loginName = null; 
     HtmlElement password = null; 
     //HtmlPage newPage; 
     HtmlAnchor anchorByHref = null; 
     try { 
      WebClient webClient = new WebClient(); 
      final HtmlPage page = webClient 
        .getPage("https://cupertino.schoolloop.com/portal/login?d=x&return_url=1325402408153"); 
      loginName = page.getElementByName("login_name"); 
      password = page.getElementByName("password"); 
      loginName.setTextContent(username); 
      loginName.setAttribute("value", username); 
      password.setAttribute("value", userpassword); 
      password.setTextContent(userpassword); 
      anchorByHref = page 
        .getAnchorByHref("javascript:document.form.event_override.value='login';document.form.submit();"); 
      HtmlPage newPage = anchorByHref.click(); 

      webClient.waitForBackgroundJavaScript(10000); 
      String html = newPage.getWebResponse().getContentAsString(); 


      message2.setText(html); 
     } catch (Exception e) { 
      e.printStackTrace(); 

     } 


} 

Tuy nhiên, trong Eclipse chạy Android, nó nói

01-02 17:38:54.099: E/dalvikvm(23163): Could not find class 'org.w3c.dom.css.CSSCharsetRule', referenced from method com.gargoylesoftware.htmlunit.javascript.host.css.CSSCharsetRule.getCharsetRule 

trong logcat.

Ngoài ra, nó không đặt văn bản của message2 là html Tôi muốn mặc dù khi tôi thử điều này trong Netbeans và in "html" trên thực tế, in toàn bộ nguồn html của trang!

Tóm lại, có 2 vấn đề. Eclipse không thành công khi nhận được html, và nó đưa ra một lỗi nói rằng không thể tìm thấy lớp CSSCharsetRule. Tôi nghĩ rằng tôi đã nhập khẩu thích hợp .jar cho điều này, nhưng tôi không chắc chắn vì HTML Unit đi kèm với khoảng 15 .jars và tôi không thể nhập tất cả nếu không ứng dụng gặp sự cố trong trình mô phỏng và điện thoại.

I have figured out that the error was due to not importing xml-apis-1.3.04.jar (which was imported in the Netbeans Project). 

Tuy nhiên, bây giờ tôi gặp một

"Chuyển đổi sang Dalvik Format Không với Lôi 1"

Lỗi.

Có thể bất kỳ vấn đề nào sẽ gây ra giá trị Null của html và cách khắc phục Lỗi chuyển đổi Dalvik?

.jar Eclipse (quá nhiều làm cho ứng dụng nặng, và bao gồm xml-apis gây Dalvik Lỗi)

file Jar trong Netbeans (làm việc)

+0

ý nghĩa nhập để thêm chúng vào đường dẫn xây dựng trong Eclipse *. Ngoài ra, thêm JUnit là một trong những lọ giúp. – Kgrover

Trả lời

1

Tôi nghĩ bạn gặp sự cố với đường dẫn lớp học trong eclipse:

Could not find class 'org.w3c.dom.css.CSSCharsetRule' 

Bạn có tất cả Chum được bao gồm trong đường chạy không?

Conversion to Dalvik Format Failed with Error 1 

này nói với tôi, rằng một trong những * .class của bạn không thể convertet thành một * dex-file

Có lẽ bạn có hai jar-file với cùng lớp bên trong:

Tôi đã giải quyết được sự cố.

Dường như tôi có hai lọ trên đường chạy của tôi bao gồm cùng một gói và lớp học .

"Conversion to Dalvik format failed with error 1" on external JAR

chỉnh sửa Để tìm lớp trùng lặp, trích xuất tất cả lọ với yêu thích unzip-công cụ của bạn và chờ cho "Tập tin này aready tồn tại".

+0

Làm cách nào để tìm ra tệp .jar xung đột? Ngoài ra, bạn có nghĩ rằng đây là lý do tại sao biến html sẽ trả về null? (Không có nội dung ở đó) một lần nữa, nếu tôi nhập * tất cả * lọ trong Netbeans, nó hoạt động. Nếu tôi nhập tất cả các lọ trong Eclipse, ứng dụng sẽ trở nên quá nặng. Tôi đã chỉnh sửa câu trả lời của mình bằng hình ảnh các lọ được nhập trong mỗi IDE nếu điều đó sẽ giúp ích. – Kgrover

+0

Ngoài ra, tôi nghĩ rằng việc bổ sung các xml-apis jar là những gì * có * lớp 'org.w3c.dom.css.CSSCharsetRule' nhưng đó là những gì gây ra lỗi Dalvik. – Kgrover

+0

Cảm ơn JARS, vui lòng mở rộng vùng chứa ADT và Android ClassPath eclipse. Có thể bạn đã sao chép các API ở đó. –

Các vấn đề liên quan