在我的Android项目中,我使用旧的apache库进行网络操作。在那里,我使用HttpContext中的 BasicCookie()来维护https调用中的会话。现在谷歌已经弃用了Apache库,所以我转而使用URLConnection进行网络连接。但我不知道如何在HttpsUrlConnection中设置cookie来维持https调用的会话。如何在HttpURlConnection中设置相同的功能。
我从这篇文章中尝试了所有这些,但没有帮助。 How to handle cookies in httpUrlConnection using cookieManager
答案 0 :(得分:1)
在Authentication类中创建一个CookieManager成员对象,以便以后在想要检索和使用cookie时可以从其他Activity访问它。
//In MyAuthentication class
static CookieManager mCookieManager = new CookieManager();
static String COOKIE_HEADER = "Set-Cookie";
//authentication code
//...
int responseCode = urlConnection.getResponseCode();
if(responseCode == HttpURLConnection.HTTP_OK){
Map<String, List<String>> headers = urlConnection.getHeaderFields();
List<String> cookies = headers.get(COOKIE_HEADER);
for(String cookie: cookies){
HttpCookie httpCookie = HttpCookie.parse(cookie).get(0);
mCookieManager.getCookieStore().add(null, httpCookie);
}
}
在您要在帖子请求中设置检索到的Cookie的其他活动中。
CookieManger cookieManager = MyAuthentication.mCookieManager;
//authentication code
//...
if(mCookieManager.getCookieStore().getCookies().size() > 0) {
urlConnection.setRequestProperty("Cookie",
TextUtils.join(";", mCookieManager.getCookieStore().getCookies()));
}