0

我正在开发需要使用 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");

那么有谁知道为什么这不会对我进行身份验证?我用“”表示的领域字符串实际上应该是什么吗?

4

3 回答 3

1

你可以使用这个:

webview.setWebViewClient(new WebViewClient() {
    @Override
    public void onReceivedHttpAuthRequest(WebView view,
        HttpAuthHandler handler, String host, String realm) {
            handler.proceed("username", "password");
    }
});
于 2016-06-03T12:39:18.873 回答
0

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

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

于 2013-12-09T19:44:30.760 回答
0

如果该站点使用 NTLM 身份验证,它将无法工作。Android 本身不支持 NTLM 身份验证。Fennec (firefox mobile) 是我见过的唯一支持它的 android 浏览器,但它仍处于 alpha 阶段。

于 2010-06-28T18:25:22.293 回答