我正在开发需要使用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");
所以有人知道为什么这不会认证我吗?我为“实际上”设置的领域字符串应该是什么?
答案 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
还是浏览器的一部分。