当前位置:  开发笔记 > 运维 > 正文

使用WebView setHttpAuthUsernamePassword?

如何解决《使用WebViewsetHttpAuthUsernamePassword?》经验,为你挑选了3个好方法。

我正在尝试进行基本身份验证以查看受保护的URL.我想访问受保护的URL,如下所示:

http://api.test.com/userinfo/vid?=1234

所以我使用WebView执行以下操作:

mWebView.setHttpAuthUsernamePassword("api.test.com", "", "me@test.com", "mypassword");
mWebView.loadUrl("http://api.test.com/userinfo/user?uid=53461");

但验证似乎不起作用,我只是得到一个输出错误页面.我在这里正确使用WebView方法吗?

更新:尝试卷曲:

curl -u me@test.com:mypassword http://api.test.com/userinfo/user?uid=53461

它拉页面很好.我尝试了主机参数的每一个组合,api的所有者不知道我的意思是什么'领域'虽然(我也不知道) - 我可以给他们什么信息来帮助这个?

谢谢



1> dparnas..:

另一种选择是使用WebViewClient;

webview.setWebViewClient(new MyWebViewClient ());

private class MyWebViewClient extends WebViewClient {
@Override
public void onReceivedHttpAuthRequest(WebView view,
        HttpAuthHandler handler, String host, String realm) {

    handler.proceed("me@test.com", "mypassword");

}
}


是的,请标记这一点.这在这里工作,而mWebView.setHttpAuthUsernamePassword没有.
我不鼓励使用这种方法.如果您提供了错误的用户名或密码,则身份验证将失败,并且webview会继续重试身份验证.这是在我的服务器上创建重复的api调用,最终导致服务器崩溃.您可以考虑使用重试计数器和WebView.stopLoading()方法来避免无限循环.

2> 小智..:
webview.setWebViewClient(new WebViewClient () {

    public void onReceivedHttpAuthRequest(WebView view,
            HttpAuthHandler handler, String host, String realm) {

        handler.proceed("login", "pass");
    }
});



3> 小智..:

WebView的默认行为是放弃所有身份验证请求.即使setHttpAuthUsernamePassword.

您必须设置WebViewClient并覆盖方法onReceivedHttpAuthRequest

推荐阅读
mobiledu2402851203
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有