WebView.setHttpAuthUsernamePassword()不起作用?

时间:2010-06-28 17:46:27

标签: android authentication webview http-authentication unauthorized

我正在开发需要使用WebView打开受密码保护的网站的Android应用程序的一部分。我使用SharedPreferences来提供用户首次登录应用程序时的用户名和密码。我已经测试了它返回的凭据,所以我知道那些是正确的。当我在模拟器中运行它时,该站点说我是未经授权的(即使我是)。这是代码:

  setContentView(R.layout.browser);
  WebView browser = (WebView) findViewById(R.id.browser);
  browser.getSettings().setJavaScriptEnabled(true);
  SharedPreferences credentials = getSharedPreferences("credentials", 0);
  browser.setHttpAuthUsernamePassword("example.com", "", credentials.getString("username", ""), credentials.getString("password", ""));
  browser.loadUrl("http://example.com");

所以有人知道为什么这不会认证我吗?我为“实际上”设置的领域字符串应该是什么?

3 个答案:

答案 0 :(得分:1)

您可以使用:

webview.setWebViewClient(new WebViewClient() {
    @Override
    public void onReceivedHttpAuthRequest(WebView view,
        HttpAuthHandler handler, String host, String realm) {
            handler.proceed("username", "password");
    }
});

答案 1 :(得分:0)

如果网站使用的是NTLM身份验证,则无效。 Android本身不支持NTLM Auth。 Fennec(firefox mobile)是我见过的唯一支持它的Android浏览器,但它仍处于alpha状态。

答案 2 :(得分:0)

Android声称现在支持NTLM。我不知道这是WebView还是浏览器的一部分。

https://code.google.com/p/android/issues/detail?id=4962