我花了一天的时间研究可用于完成以下任务的图书馆:
这是我尝试未成功的尝试:
我真的希望HtmlUnit工作,因为它似乎最适合我的解决方案。有什么方法或者至少我错过了另一个适合我需要的库吗?
我目前使用的是Android Studio 0.1.7,如果需要,可以移至Ellipse。
提前致谢!
好吧,两周后,我承认失败了,目前正在使用一种对我来说非常有用的解决方法。
问题: 将HTMLUnit移植到Android太困难了(或者至少以我的专业水平)。我确信这是一个值得的项目(对于有经验的Java程序员而言,并没有那么耗时)。我给HTMLUnit的家伙们发了电子邮件,他们评论说他们没有考虑端口或将要付出什么努力,但是建议任何想要开始这样的项目的人都应该向他们的邮件列表发送一条消息,以吸引更多的开发人员参与(http: //htmlunit.sourceforge.net/mail- lists.html)。
解决方法: 我使用android内置的WebView并重写了Webview类的onPageFinished方法来注入Javascript,该Javascript可在页面完全加载后捕获所有html。Webview还可以用于调用进一步的JavaScript操作,单击按钮,填写表单等。
码:
webView.getSettings().setJavaScriptEnabled(true); MyJavaScriptInterface jInterface = new MyJavaScriptInterface(context); webView.addJavascriptInterface(jInterface, "HtmlViewer"); webView.setWebViewClient(new WebViewClient() { @Override public void onPageFinished(WebView view, String url) { //Load HTML webView.loadUrl("javascript:window.HtmlViewer.showHTML ('<head>'+document.getElementsByTagName('html')[0].innerHTML+'</head>');"); } webView.loadUrl(StartURL); ParseHtml(jInterface.html); public class MyJavaScriptInterface { private Context ctx; public String html; MyJavaScriptInterface(Context ctx) { this.ctx = ctx; } @JavascriptInterface public void showHTML(String _html) { html = _html; } }