gpt4 book ai didi

java - 从 SharedPreference 添加 Cookie 到 Android 应用程序中的 Cookie 管理器

转载 作者:行者123 更新时间:2023-12-01 10:37:52 26 4
gpt4 key购买 nike

我在启动期间在 Cookie 管理器上添加 Cookie 时遇到问题。

我试图解决的问题是 - 在登录响应期间将 cookie 添加到 Sharedprefrence 中,并且当应用程序被终止或退出时,检索该 cookie 并将其添加到我的 cookie 存储中,以便主 Activity 将读取命令发送到服务器和服务器将看到 cookie 并知道用户已经登录。

我目前面临的问题是 -在登录过程中,我可以将 cookie 保存到共享首选项中。当应用程序被终止并重新启动时,我从共享首选项中获取 cookie 字符串,但是当我将其添加到我的 cookiemanager 时 - 它仍然需要我进入登录屏幕。另外,当我在日志中打印 Sharedprefrence 之后,我看到 URI 为 null,而在应用程序中 - 当我设置 cookie 时 - 我看到我的 URI 与 cookie 获取域值匹配(不确定它是否完全像这样工作或不是)

流量是Mainactivity向服务器发送读取命令,如果服务器发现没有cookie且用户未登录,则发送状态0;否则 1.如果状态为 0,则我将转到登录 Activity ,否则转到主屏幕 Activity 。这工作正常,但只有当应用程序被终止时,因为 cookie 被删除,它需要我登录屏幕。

下面是代码:-

我的主要 Activity/登录 Activity 和主屏幕 Activity - 使用 httpconnection 的异步任务调用类 - 写入共享首选项。

在 doInbackground 内部:-

 URL url = new URL(params[0]);

urlConnection = (HttpURLConnection) url.openConnection();
urlConnection.setRequestMethod("GET");
urlConnection.connect();

List<HttpCookie> cookies = ((CookieManager)CookieHandler.getDefault()).getCookieStore().getCookies();
if (cookies.isEmpty()) {
Log.d("LOG_TAG","no cookies received");
} else {
for (int i = 0; i < cookies.size(); i++) {

Context context1 = application.getContext();
SharedPreferences sharedPreferences = context1.getSharedPreferences("Myprefs", Context.MODE_PRIVATE);
SharedPreferences.Editor editor = sharedPreferences.edit();
editor.putString("cookie",cookies.get(i).toString());
editor.putString("URI",cookiedomain);
editor.commit();


}

}

应用程序类 -

public class application extends Application {
private static Context context;
@Override
public void onCreate() {
super.onCreate();
CookieManager cookieManager = new CookieManager();
CookieHandler.setDefault(cookieManager);

application.context = getApplicationContext();
SharedPreferences settings = getSharedPreferences("Myprefs", 0);
String silent = settings.getString("cookie", null);
String uri = settings.getString("URI",null);
if (silent != null) {
if (uri != null) {
HttpCookie httpcookie = new HttpCookie("user", silent);
URI myuri = URI.create(uri);
cookieManager.getCookieStore().add(myuri,httpcookie);
}
}
}

public static Context getContext() {
return application.context;
}

如果有人能帮助我,我将不胜感激。我真的很伤脑筋。

最佳答案

通过从 Sharedprefrence 加载 Cookie 并在每次应用程序被终止并再次打开时添加到 Cookiemanager 来解决此问题。

关于java - 从 SharedPreference 添加 Cookie 到 Android 应用程序中的 Cookie 管理器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34570426/

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