0

有一个 SSL 加密(由 thawte 签名,因此没有自签名问题)需要登录的网站。我的目标是从该站点的子页面中读取一些数据。网络浏览器上的常规流程是:

  • 转到“https://abc.de”
  • 输入凭据并点击按钮
  • 现在..登录你点击一个链接,可以看到数据

现在在 Android 中,我希望用户单击一个按钮,自动在后台执行所有这些操作,并以解析的形式向他显示结果。

由于我对 Android 编程了解不多,所以我的第一个猜测是 WebView。当使用凭据直接向登录页面发送 POST 请求时,这可以正常工作。但似乎我无法获得 WebView 的源代码。什么是做我想做的最好/最简单的技术/方法?

4

3 回答 3

2

与其只使用WebView,不如使用HttpClientHttpURLConnection(有关使用哪个的讨论,请参阅此博客文章)从服务器初始加载页面。然后,您可以对返回的数据执行您需要执行的操作,然后将其传递给WebView显示。

于 2012-10-18T11:06:36.003 回答
2

您可以使用HttpClientHttpsUrlConnection直接与服务器通信,而无需WebView. 以我的问题/答案为例。

于 2012-10-18T12:05:45.240 回答
0

您可以为该用户提交表单吗?您可以使用 HTTPClient 并打开连接来提交表单。然而,这很容易变得棘手和丑陋。一些服务器在允许客户端登录之前将 nonce 传递给浏览器。如果你的服务器有这样的安全特性,你最终会在程序登录成功之前编写大量代码(如果有的话)。此外,您甚至需要使用 [1] 之类的 HTML 解析器来读取数据。

如果可能的话,要求网站公开 API 来检索这些数据要容易得多。这将是我建议的路线。Web 服务还可以通过 OAuth 或基于 HTTPS 的 BASIC auth 对您的用户进行身份验证。它消除了屏幕抓取的痛苦,但也需要一些时间投入来编写所述服务。

[1] - http://htmlcleaner.sourceforge.net/

于 2012-10-18T11:17:51.250 回答