在Android中通过http调用维护会话

在我的Android项目中,我使用旧的Apache库进行网络操作。 在那里,我使用HttpContext中的BasicCookie()来维护通过https调用的会话。 现在谷歌已经弃用了Apache库,所以我切换到URLConnection网络。 但我不确定如何在HttpsUrlConnection中设置Cookie来维护跨HTTPS调用的会话。 我怎样才能在HttpURlConnection中设置相同的功能。

我从这篇文章中尝试了所有这些,但没有帮助。 如何使用cookieManager在httpUrlConnection中处理cookie


在您的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()));
}
链接地址: http://www.djcxy.com/p/87919.html

上一篇: Maintaining session across http calls in Android

下一篇: Should session cookie be kept in shared preferences?