如何在WebView中的loadDataWithBaseURL中处理cookie?

时间:2013-06-05 20:06:24

标签: java android cookies webview

我正在使用loadDataWithBaseURL加载所有页面 第1步:登录(第1页)使用php设置cookie 第2步:我检查cookie,并加载登录页面。 (第2页)
第3步:现在在第2页,我再次使用php检查cookie,如果未设置cookie或数据错误,则重定向到第1页。

似乎在第2步和第2步之间3,cookie数据丢失,因为我被重定向回登录..
这是一些代码:

// Load login page
String urlIn = "http://myurl.com";    
String out = new Scanner(new URL(urlIn).openStream(), "UTF-8").useDelimiter("\\A").next();
webView.loadDataWithBaseURL("file:///android_asset/", out, "text/html", "UTF-8", null);


// User logged in, check for cookie and load page 2    
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
String cookie = cookieManager.getCookie("http://myurl.com");    
if(cookie != null && cookie.length() > 0){    
    String urlIn = "http://myurl.com/user/";
    String out = new Scanner(new URL(urlIn).openStream(), "UTF-8").useDelimiter("\\A").next();
    webView.loadDataWithBaseURL("file:///android_asset/", out, "text/html", "UTF-8", null);
}

1 个答案:

答案 0 :(得分:2)

我希望loadDataWithBaseURL()忽略cookie,因为没有涉及到HTTP。 Cookie是一种HTTP构造,loadDataWithBaseURL()直接从您那里获取页面,而不是来自HTTP。

Cookie可能适用于对从加载的内容(例如图片)发出的资源的HTTP请求。