我目前有一个应用程序,需要一个用户名&从用户的密码,然后使用javascript命令在webview登录并呈现页面。我现在想避免使用webview,所以我计划使用jsoup来拉出页面的必要部分,并使用诸如textview之类的东西来呈现。那么,我如何使用jsoup执行javascript让用户登录,然后抓取html呢?
Jsoup不能执行javascript,因为它不包含javascript引擎。你可以使用的是selenium的web驱动api。现在有一个叫做android web driver的新项目,它可以被证明是适合你的工具(我自己从来没有尝试过)。
链接:
Android web driver
Selenium web driver
Jsoup不执行JavaScript。但我认为在这种情况下你仍然可以使用jsoup。这取决于JavaScript是如何工作的。一般来说,这就像在POST数据中使用凭据向某个URL提交页面一样。因此,您需要标识用户名和密码的参数名称和值。然后,您可以使用Jsoup将您的数据通过适当的凭据发布到该URL。
你可以试试
Document doc = Jsoup.connect("http://www.yoururl.com/")
.data("userName", "your username")
.data("password", "your password")
.post();
然后用doc对象你可以解析和显示你的视图
您应该先登录,然后解析html。您可以使用cookie进行登录,并在以后的代码中重新调用cookie,就像这样。
Response res = Jsoup.connect("http://yourloginURL").data("username", "username", "password", "password").method(Method.POST).execute();
Map<String, String> loginCookies = res.cookies();
Document doc1 = Jsoup.connect("http://yourotherURL").cookies(loginCookies).get();