2011-05-04 114 views
2

以下是我想要了解的:我使用webview访问需要身份验证的站点的功能。因此,无论何时加载该特定链接,都会显示登录页面。是否可以以某种方式默认进行身份验证,以便直接显示特定功能?也许通过使用“webView.setHttpAuthUsernamePassword”(这似乎不适合我,或者我不这样做)或通过在加载页面之前进行POST或GET或其他可能性?从webview默认身份验证

在登录服务器时,应该发送给我一个cookie。

回答

0

该方法仅适用于HTTP基本身份验证,不适用于基于表单的登录。

您最好的选择是使用WebViewClient的onLoadResource方法检测到的网页是关于加载,然后覆盖使用loadData与HTML/JS的一大块的WebView中的内容的帖子到登录形式正确的参数,然后检测成功的cookie返回并转发到原始URL。

根据网站的不同,您可能需要设置正确的引用标头或CSRF标记以及其他属性。

祝你好运。

+0

感谢您的回答!虽然没有给我太多希望。我会继续寻找,也许还有其他一些方法。 – 2011-05-04 20:24:41

+0

是的,基于表单的身份验证有点麻烦:另一种方法是编写一些java代码(使用HTTP客户端)登录到服务器,提取cookie,然后将cookie放入webview的cookie管理器中(请参阅http: //developer.android.com/reference/android/webkit/CookieManager.html)。这可能会更好。 – Femi 2011-05-04 21:08:07

+0

这实际上工作! – 2011-05-06 11:50:43

0

见,你可以做任务就这样,我不知道这是否是你想要什么:

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

    String currentUrl = yourWebView.getUrl(); 
    if(currentUrl.equals("www.yourwebsite.com")){ 
     handler.proceed("username","password"); 
    } 

} 
相关问题