以下是我想要了解的:我使用webview访问需要身份验证的站点的功能。因此,无论何时加载该特定链接,都会显示登录页面。是否可以以某种方式默认进行身份验证,以便直接显示特定功能?也许通过使用“webView.setHttpAuthUsernamePassword”(这似乎不适合我,或者我不这样做)或通过在加载页面之前进行POST或GET或其他可能性?从webview默认身份验证
在登录服务器时,应该发送给我一个cookie。
以下是我想要了解的:我使用webview访问需要身份验证的站点的功能。因此,无论何时加载该特定链接,都会显示登录页面。是否可以以某种方式默认进行身份验证,以便直接显示特定功能?也许通过使用“webView.setHttpAuthUsernamePassword”(这似乎不适合我,或者我不这样做)或通过在加载页面之前进行POST或GET或其他可能性?从webview默认身份验证
在登录服务器时,应该发送给我一个cookie。
该方法仅适用于HTTP基本身份验证,不适用于基于表单的登录。
您最好的选择是使用WebViewClient的onLoadResource方法检测到的网页是关于加载,然后覆盖使用loadData与HTML/JS的一大块的WebView中的内容的帖子到登录形式正确的参数,然后检测成功的cookie返回并转发到原始URL。
根据网站的不同,您可能需要设置正确的引用标头或CSRF标记以及其他属性。
祝你好运。
见,你可以做任务就这样,我不知道这是否是你想要什么:
@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");
}
}
感谢您的回答!虽然没有给我太多希望。我会继续寻找,也许还有其他一些方法。 – 2011-05-04 20:24:41
是的,基于表单的身份验证有点麻烦:另一种方法是编写一些java代码(使用HTTP客户端)登录到服务器,提取cookie,然后将cookie放入webview的cookie管理器中(请参阅http: //developer.android.com/reference/android/webkit/CookieManager.html)。这可能会更好。 – Femi 2011-05-04 21:08:07
这实际上工作! – 2011-05-06 11:50:43