Есть ли в Android класс для форматирования файлов cookie в значение для CookieManager? - PullRequest
2 голосов
/ 17 февраля 2011

Когда мое приложение запускается, я отправляю запрос на вход в веб-сервис и получаю 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();

В идеале, я хотел бы, чтобы URL cookie и значение заголовка «Set-Cookie», требуемые CookieManager, былипостроенный классом Cookie или некоторым служебным классом.Существует ли такая вещь?

Я пробовал RFC2109Spec и RFC2965Spec, но они выдают заголовок "Cookie", а не заголовок "Set-Cookie".

1 Ответ

0 голосов
/ 18 марта 2011

Предполагается, что предпочтительным способом является отправка заголовков из вашего ответа непосредственно в CookieManager. Я основываюсь на коде, который я нашел у Ромена Гая :

final CookieManager cookieManager = CookieManager.getInstance();
final HttpResponse response = ...
final Header[] cookies = response.getHeaders("set-cookie");
for (Header cooky : cookies) {
    cookieManager.setCookie(url, cooky.getValue());
}
...