【发布时间】:2016-03-14 20:46:40
【问题描述】:
我正在尝试在 Android 上使用 Retrofit/OkHttpClient 进行身份验证调用。服务器使用两个 Set-Cookie 标头响应 302,并且 okHttp 处理重定向。我发现了一些使用 cookieManager 获取这些 cookie 的技巧。但似乎 cookieManager 只读取了一个 Set-Cookie 标头。
我在服务器响应标头中有这个:
Set-Cookie:first=1
Set-Cookie:second=2
这是我的 cookieManager 部分:
private static CookieManager cookieManager;
(...)
OkHttpClient okHttpClient = new OkHttpClient();
okHttpClient.setFollowSslRedirects(true);
okHttpClient.setAuthenticator(new NTLMAuthenticator(user, passwd, domain));
cookieManager = new CookieManager();
cookieManager.setCookiePolicy(CookiePolicy.ACCEPT_ALL);
okHttpClient.setCookieHandler(cookieManager);
并处理 Set-Cookie 标头:
public void checkForSetCookies() {
List<retrofit.client.Header> headerList = new ArrayList<>();
List <HttpCookie> cookies = cookieManager.getCookieStore().getCookies();
//List cookies has only one cookie: first=1
for (HttpCookie cookie : cookies) {
retrofit.client.Header header = new retrofit.client.Header("Set-Cookie", cookie.toString());
headerList.add(header);
}
if (headerList.size() > 0) {
Commons.setLoginRetofitCookies(headerList);
}
}
有没有办法强制 cookieManager 读取我的两个 Set-Cookie 标头?
提前感谢您的帮助。
【问题讨论】:
标签: android cookies retrofit okhttp