让HtmlUnit在Android下运行

时间:2012-06-13 11:49:21

标签: java android htmlunit

我想知道是否有人能够在Android下运行HtmlUnit?

我有一个网站,我正在使用Jsoup(这很好用)。但是,其中一个部分包含2页以上。该站点使用ASP.NET,他们使用Javascript回发链接到下一页。因此,我需要以某种方式执行该Javascript以获取下一页的内容。这就是我对HtmlUnit的尝试。

以下代码在Java上完美运行:

WebClient webClient = new WebClient();
webClient.setJavaScriptEnabled(true);
HtmlPage page = null;
webClient.setThrowExceptionOnFailingStatusCode(false);
webClient.setThrowExceptionOnScriptError(false);

            try {
                page = webClient.getPage(URLOne.toString());
            } catch (FailingHttpStatusCodeException e1) {
                e1.printStackTrace();
            } catch (MalformedURLException e1) {
                e1.printStackTrace();
            } catch (IOException e1) {
                e1.printStackTrace();
            }

HtmlAnchor anchor = (HtmlAnchor) page.getAnchorByHref("javascript:__doPostBack('lb_next','')");

            try {
                page = (HtmlPage) anchor.click();
            } catch (IOException e) {
                // TODO Auto-generated catch block
                e.printStackTrace();
            }

webClient.closeAllWindows();

Document doc1 = Jsoup.parse(page.asXml());

当我在Android中设置必要的库时,我必须删除:xalan,xerces和xml-apis(HtmlUnit on Android)。如果我保留它们,我会转换为Dalvik错误。

没有它们,应用程序在Android中运行,但是当涉及需要HtmlUnit的部分时,我在logcat中遇到以下几个错误:

Could not find method org.apache.http.conn.scheme.Scheme.<init>, referenced from method com.gargoylesoftware.htmlunit.HttpWebConnection.createHttpClient
Could not find method org.w3c.dom.css.CSSStyleDeclaration.getLength, referenced from method com.gargoylesoftware.htmlunit.javascript.host.css.ComputedCSSStyleDeclaration.applyStyleFromSelector
VFY: unable to find class referenced in signature (Lorg/w3c/dom/css/CSSStyleSheet;
VFY: unable to find class referenced in signature (Lorg/w3c/dom/css/CSSStyleDeclaration;

然后申请人关闭。此问题与此类似:How do I get HtmlUnit to work under Android?HtmlUnit Android problem with WebClient

我使用HtmlUnit的唯一原因是能够在该页面上运行Javascript。我愿意接受任何可以让我做类似事情的替代方案。

由于

1 个答案:

答案 0 :(得分:0)

请勿使用htmlUnit。

你会认为你只需要几个核心罐子。不,你可能需要所有这些,否则你可能会遇到一些未找到的类错误。

在运行之前,先了解一下你需要加载到Eclipse中的罐子数量! 共有21个罐子,超过10mb!请记住,您还可以为Android Market打包最多50mb。它只会减慢Eclipse的速度,你可能需要在调试时增加内存。

改用Jsoup!