2012-01-03 17 views
5

Estoy usando la unidad HTML para ir a una página web, completar algunos formularios y hacer clic en un botón para acceder a la página web siguiente. Esa nueva página web, (llamada newPage en mi código) es de lo que estoy extrayendo la fuente html.Android: error de CSS al utilizar HTML Unit & Eclipse

Este método funciona perfectamente en Netbeans (aunque se da una cantidad excesiva de advertencias)

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

     } 


} 

Sin embargo, en Eclipse con Android, se dice

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 

en el Logcat.

Además, no establece el texto de mensaje2 como el html quiero aunque cuando intento esto en Netbeans e imprimir "html" lo hace, de hecho, se imprime el código HTML completo de la página!

En resumen, hay 2 problemas. Eclipse no está obteniendo correctamente el html, y está dando un error al decir que no pudo encontrar la clase CSSCharsetRule. Creo que he importado el .jar apropiado para esto, pero no estoy seguro porque HTML Unit viene con alrededor de 15 .jar y no puedo importarlos todos de lo contrario la aplicación tiene problemas en el emulador y el teléfono.

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

Sin embargo, ahora me encuentro con un "Formato de conversión a Dalvik se produjo el error 1"

error.

¿Es posible que alguno de los problemas provoque el valor nulo de html y cómo soluciono el error de conversión de Dalvik?

.jar Eclipse (demasiados hace aplicación pesada, e incluyendo XML-API hace que Dalvik error)

archivos Jar en Netbeans (de trabajo)

+0

importando significado para agregarlos a la ruta de compilación en Eclipse *. Además, agregar JUnit como uno de los frascos ayudó. – Kgrover

Respuesta

1

Creo que tienes un problema con tu classpath dentro del eclipse:

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

¿Tiene todos los tarros incluidos en el buildpath?

Conversion to Dalvik Format Failed with Error 1 

Esto me dice, que uno de sus * .class no se puede convertet en un archivo * dex-

puede que tenga dos jar-archivos con la misma clase en el interior:

He resuelto el problema.

Parece que tengo dos jar en mi buildpath que incluyen el mismo paquete y las clases.

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

edición Para encontrar clases duplicadas, extraer todos los frascos con su descomprimir-herramienta favorita y esperar a que "Este archivo aready existe".

+0

¿Cómo averiguo qué archivos .jar entran en conflicto? Además, ¿cree que esta es la razón por la cual la variable html devolverá nulo? (No hay contenido allí) otra vez, si importo * todos * jarros en Netbeans, funciona. Si importo todos los archivos jar en Eclipse, la aplicación se vuelve demasiado pesada. He editado mi respuesta con imágenes de los frascos importados en cada IDE, si eso ayuda. – Kgrover

+0

también, creo que la adición del jar xml-apis es lo que * tiene * la clase 'org.w3c.dom.css.CSSCharsetRule' pero eso es lo que causa el Error Dalvik. – Kgrover

+0

Gracias por los JARS, expanda el eclipse ADT y el contenedor Android ClassPath. Quizás hayas duplicado las API allí. –

Cuestiones relacionadas