2

アプリの起動時に Web サービスにログイン リクエストを送信し、Cookie を受け取ります。その Cookie を WebView で使用したいのですが、次のコードを使用します。

List<Cookie> cookies = this.get_my_cookies_from_somewhere();
CookieSyncManager cookieSyncManager = CookieSyncManager.createInstance(this);
CookieManager cookieManager = CookieManager.getInstance();
cookieManager.removeAllCookie();

for (Cookie cookie : cookies) {
    String rawUrl = (cookie.isSecure() ? "https" : "http") + "://" + cookie.getDomain() + cookie.getPath();
    cookieManager.setCookie(rawUrl, cookie.getName() + "=" + cookie.getValue() + "; domain=" + cookie.getDomain());
}
cookieSyncManager.sync();

理想的には、CookieManager が必要とする Cookie の URL と「Set-Cookie」ヘッダーの値を、Cookie クラスまたは何らかのユーティリティ クラスで構築したいと考えています。そのようなものは存在しますか?

RFC2109Spec と RFC2965Spec を試しましたが、「Set-Cookie」ヘッダーではなく「Cookie」ヘッダーが生成されます。

4

1 に答える 1

0

推奨される方法は、ヘッダーをレスポンスから CookieManager に直接送信することです。Romain Guy から見つけたコードに基づいています。

final CookieManager cookieManager = CookieManager.getInstance();
final HttpResponse response = ...
final Header[] cookies = response.getHeaders("set-cookie");
for (Header cooky : cookies) {
    cookieManager.setCookie(url, cooky.getValue());
}
于 2011-03-18T02:37:28.977 に答える