java - Android:使用 HTML Unit 和 Eclipse 时出现 CSS 错误

标签 java android eclipse htmlunit

我正在使用 Html Unit 转到一个网页,填写一些表格,然后单击一个按钮进入下一个网页。这个新网页(在我的代码中称为 newPage)是我从中提取 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();

        }


}

但是,在运行 Android 的 Eclipse 中,它说

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 的文本设置为我想要的 html 尽管当我在 Netbeans 中尝试此操作并打印“html”时,它实际上打印了页面的完整 html 源代码!

总结起来,有2个问题。 Eclipse 没有成功获取 html,它给出了一个错误,提示找不到 CSSCharsetRule 类。我想我已经为此导入了适当的 .jar,但我不确定,因为 HTML Unit 附带了大约 15 个 .jar,我无法导入它们,否则应用程序在模拟器和手机中会出现问题。

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

但是,现在我遇到了一个

"Conversion to Dalvik Format Failed with Error 1"

错误。

是否有任何问题会导致 html 的 Null 值,以及如何修复 Dalvik 转换错误?

.jar Eclipse(太多会使应用程序变重,包含 xml-apis 会导致 Dalvik 错误)

Netbeans 中的 Jar 文件(工作)

最佳答案

我认为您在 eclipse 中的类路径有问题:

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

您是否已将所有 Jar 包含到构建路径中?

Conversion to Dalvik Format Failed with Error 1

这告诉我,您的 *.class 之一不能转换成 *dex 文件

也许您有两个内部类相同的 jar 文件:

I solved the problem.

It seems that I have two jars on my buildpath that include the same package and classes.

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

编辑 要查找重复的类,请使用您最喜欢的解压缩工具提取所有 jar 并等待“此文件已存在”。

关于java - Android:使用 HTML Unit 和 Eclipse 时出现 CSS 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8707296/

相关文章:

java - 将 arrayList 数据加载到 JTable

Android 同步 Sqlite

java - WebView 显示空白页面而不是加载链接

java - 为什么 Eclipse 不编译我的 Web 应用程序?

Android - 图书馆项目

java - 当子类在本地重写其中一些方法时,如何强制子类使用父方法?

java - 是否有增强 Java 访问控制的 Maven 插件?

java - 使用 JButton 和 ActionListener 启动记事本

android - 在 Kotlin 中使用静态 Java 方法作为静态(或单例)属性

java - Eclipse 插件是否会卷起?