1

すべてのページを loadDataWithBaseURL でロードしています。
ステップ 1: ログイン (ページ 1) は、php で Cookie を設定します。
ステップ 2: Cookie を確認し、ログインしたページを読み込みます。(ページ 2)
ステップ 3: ページ 2 で、php を使用して Cookie を再度チェックし、Cookie が設定されていないか、データが間違っている場合は、ページ 1 にリダイレクトします。

ステップ 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);
}
4

1 に答える 1

2

loadDataWithBaseURL()HTTP が関与していないという理由だけで、Cookie を無視することを期待します。Cookie は HTTP コンストラクトであり、HTTPloadDataWithBaseURL()からではなく、ユーザーから直接ページを取得します。

読み込まれたコンテンツ (画像など) から生成されるリソースに対する HTTP リクエストに Cookie が適用される場合があります。

于 2013-06-05T20:08:37.770 に答える