由于WebView不会自动处理类似AJAX或XMLHTTP的请求,需要在应用程序中自定义WebViewClient类来处理Cookie。下面是一个示例:
import android.webkit.CookieManager;
import android.webkit.WebResourceRequest;
import android.webkit.WebView;
import android.webkit.WebViewClient;
public class MyWebViewClient extends WebViewClient {
@Override
public void onPageFinished(WebView view, String url) {
// 获取响应头中的Set-Cookie字段
String cookies = CookieManager.getInstance().getCookie(url);
if (cookies != null && !cookies.isEmpty()) {
// 将Set-Cookie值添加到Webview的CookieManager中
CookieManager.getInstance().setCookie(url, cookies);
}
}
@Override
public boolean shouldOverrideUrlLoading(WebView view, WebResourceRequest request) {
// 判断请求是否需要带上Cookie
if (request.getUrl().getHost().equals("example.com")) {
// 获取请求头中Cookie字段
String cookies = CookieManager.getInstance().getCookie(request.getUrl().toString());
if (cookies != null && !cookies.isEmpty()) {
// 将Cookie添加到请求头中
request.getRequestHeaders().put("Cookie", cookies);
}
}
return super.shouldOverrideUrlLoading(view, request);
}
}
然后在WebView中设置自定义的WebViewClient类:
WebView webView = findViewById(R.id.web_view);
webView.setWebViewClient(new MyWebViewClient());
这样就可以在WebView中正确处理Cookie了。