在我的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/

10-10 10:09