gpt4 book ai didi

java - 在 Android 中跨 http 调用维护 session

转载 作者:行者123 更新时间:2023-11-30 00:23:01 25 4
gpt4 key购买 nike

在我的 Android 项目中,我使用旧的 apache 库进行网络操作。我在 HttpContext 中使用 BasicCookie() 来维护 https 调用中的 session 。现在谷歌已经弃用了 Apache 库,所以我切换到 URLConnection 进行网络连接。但我不确定如何在 HttpsUrlConnection 中设置 cookie 以维护跨 https 调用的 session 。如何在 HttpURlConnection 中也设置相同的功能。

我尝试了这篇文章中的所有这些,但没有帮助。 How to handle cookies in httpUrlConnection using cookieManager

最佳答案

在您的 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 的其他 Activity 中。

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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com