在我的Android项目中,我使用旧的apache库进行网络操作。我在那里使用HttpContext中的BasicCookie()来维护HTTP调用之间的会话。现在Google已弃用Apache库,因此我改用URLConnection进行联网。但是我不确定如何在HttpsUrlConnection中设置cookie来维护https调用之间的会话。如何在HttpURlConnection中设置相同的功能。
我从这篇文章尝试了所有这些,但没有帮助。
How to handle cookies in httpUrlConnection using cookieManager
最佳答案
在Authentication类中创建一个CookieManager成员对象,以便以后要检索和使用cookie时可以从其他活动中访问它。
//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()));
}
关于java - 在Android中维护HTTP调用之间的 session ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/45923796/