2012-01-03 11 views
5

का उपयोग करते समय सीएसएस त्रुटि मैं वेबपृष्ठ पर जाने के लिए एचटीएमएल यूनिट का उपयोग कर रहा हूं, कुछ रूपों को भरता हूं, और अगले वेबपृष्ठ पर जाने के लिए बटन क्लिक करता हूं। वह नया वेबपृष्ठ, (जिसे मेरे कोड में नया पेज कहा जाता है) वह है जिसे मैं HTML स्रोत निकाल रहा हूं।एंड्रॉइड: एचटीएमएल यूनिट और ग्रहण

इस विधि Netbeans में पूरी तरह से काम करता है (हालांकि यह चेतावनी की अत्यधिक मात्रा में देता है)

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

     } 


} 

हालांकि, ग्रहण में एंड्रॉयड चल रहा है, यह logcat में कहते हैं

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 

इसके अलावा, यह एचटीएमएल के रूप में message2 के पाठ निर्धारित नहीं करता है मैं चाहता हूँ हालांकि जब मैं इस Netbeans में और प्रिंट "html" कोशिश यह वास्तव में पेज का पूरा html स्रोत मुद्रित करता है!

संक्षेप में, 2 समस्याएं हैं। ग्रहण सफलतापूर्वक एचटीएमएल प्राप्त नहीं कर रहा है, और यह एक त्रुटि दे रहा है जिसमें सीएसएस चार्ससेट नियम नहीं मिला। मुझे लगता है कि मैंने इसके लिए उपयुक्त .jar आयात किया है, लेकिन मुझे यकीन नहीं है क्योंकि एचटीएमएल यूनिट लगभग 15 .jars के साथ आता है और मैं उन्हें अन्य आयात नहीं कर सकता अन्यथा एप्लिकेशन को एमुलेटर और फोन में परेशानी होती है।

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). 

हालांकि, अब मैं

त्रुटि एक

"त्रुटि 1 के साथ विफल रूपांतरण Dalvik के लिए प्रारूप" मुठभेड़।

क्या यह संभव है कि किसी भी समस्या से एचटीएमएल के शून्य मूल्य का कारण होगा, और मैं Dalvik रूपांतरण त्रुटि को कैसे ठीक करूं?

ग्रहण .jar (बहुत अधिक एप्लिकेशन भारी बनाता है, और सहित एक्सएमएल-apis Dalvik त्रुटि का कारण बनता है) Netbeans में (कार्य)

जार फ़ाइलों

+0

ईक्लीप्स * में निर्माण पथ में जोड़ने के लिए आयात का अर्थ है। इसके अलावा, ज्युनिट को जार में से एक के रूप में जोड़ने में मदद मिली। – Kgrover

उत्तर

1

मुझे लगता है कि आपको ग्रहण के भीतर कक्षा के साथ समस्या है:

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

क्या आपके पास सभी जार बिल्डपैथ में शामिल हैं?

Conversion to Dalvik Format Failed with Error 1 

यह मुझसे कहता है, कि अपने * .class में से एक एक * डेक्स-फाइल में convertet नहीं किया जा सकता

शायद तुम एक ही कक्षा के अंदर के साथ दो जार-फ़ाइलें:

मैंने समस्या हल की।

ऐसा लगता है कि मेरे पास मेरे बिल्डपैथ पर दो जार हैं जिनमें पैकेज और कक्षाएं शामिल हैं।

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

संपादित डुप्लिकेट वर्ग मिल जाए, अपने पसंदीदा unzip-उपकरण के साथ सभी जार निकालने और "इस फ़ाइल में aready मौजूद है" के लिए प्रतीक्षा करने के लिए।

+0

मैं कैसे पता लगा सकता हूं कि कौन सी .jar फाइलें संघर्ष करती हैं? साथ ही, क्या आपको लगता है कि यही कारण है कि एचटीएमएल वैरिएबल शून्य हो जाएगा? (वहां कोई सामग्री नहीं है) फिर से, अगर मैं नेटबीन्स में * सभी * जार आयात करता हूं, तो यह काम करता है। यदि मैं ग्रहण में सभी जार आयात करता हूं, तो एप्लिकेशन बहुत भारी हो जाता है। मैंने प्रत्येक आईडीई में आयात किए गए जार की तस्वीरों के साथ अपना जवाब संपादित किया है यदि इससे मदद मिलेगी। – Kgrover

+0

भी, मुझे लगता है कि एक्सएमएल-एपिस जार का जोड़ा * है * कक्षा * org.w3c.dom.css.CSSCharsetRule 'है, लेकिन यही कारण है कि Dalvik त्रुटि का कारण बनता है। – Kgrover

+0

JARS के लिए धन्यवाद, कृपया ग्रहण एडीटी और एंड्रॉइड क्लासपाथ कंटेनर का विस्तार करें। हो सकता है कि आपके पास डुप्लीकेट एपीआई हों। –

संबंधित मुद्दे