1

我正在尝试设置一个 Android 应用程序,我可以在其中访问任意代理或 HTTP 身份验证后面的 URL。也就是说,应用程序不会立即知道 URL 是否需要身份验证,而是会通过向用户询问凭据来响应身份验证请求,就像它对 Android 浏览器所做的那样。

我最近研究了如何为 WebView 请求用户身份验证,响应来自浏览器的身份验证请求,打开一个对话框,并将用户推进到目标页面。我希望对HttpClient.

在我看来,基本过程是:

  1. 通过 执行请求HttpClient.execute
    • 如果不是带有正确标头的 401 或 407,则触发“完成”回调。
    • 否则...
  2. 弹出一个对话框,询问用户名和密码。
  3. 通过在 HTTP 客户端中设置 http 凭据HttpClient.getCredentialsProvider().setCredentials
  4. 返回步骤 1,直到用户点击取消或服务器放弃。在这种情况下,使用收到的最后一个响应触发“失败”回调。

我是在正确的轨道上还是有人已经实现了类似的东西?我不想在这方面重新发明轮子。

4

2 回答 2

0

上述反应式方法确实有效。响应任意 401 或 407 请求是有效的,需要注意的是您需要支持您希望遇到的每个身份验证方案,因此类似的东西UsernamePasswordCredentials不适用于 NTLM。

于 2012-07-27T19:27:54.200 回答
0

您应该尝试apache 站点上的身份验证示例

httpclient.getCredentialsProvider().setCredentials(
                    new AuthScope("localhost", 443),
                    new UsernamePasswordCredentials("username", "password"));

java文件的直接链接是http://hc.apache.org/httpcomponents-client-ga/httpclient/examples/org/apache/http/examples/client/ClientAuthentication.java

于 2012-06-20T21:18:59.710 回答