标签: android-cookiemanager

如何使用cookieManager在httpUrlConnection中处理cookie

我有一个返回多个cookie的服务器请求,如下所示:

在此输入图像描述

这就是我将这些cookie存储到cookieManager的方式:

HttpURLConnection connection = ... ;
static java.net.CookieManager msCookieManager = new java.net.CookieManager();
msCookieManager.put(COOKIES_URI, connection.getHeaderFields());
Run Code Online (Sandbox Code Playgroud)

这就是我将这些cookie添加到下一个连接的方式:

connection.setRequestProperty("Cookie", 
  msCookieManager.getCookieStore().get(COOKIES_URI).toString());
Run Code Online (Sandbox Code Playgroud)

它是从cookieManager获取cookie的正确方法吗?我很确定有一个更好的...

cookies android httpurlconnection android-cookiemanager

36
推荐指数
2
解决办法
8万
查看次数

Android cookie manager - 如何获取所有cookie

我需要获取存储在webview中的所有cookie.目前默认的webview.

https://developer.android.com/reference/android/webkit/CookieManager.html

目前它只支持:

  • getCookie(String url)

我需要能够在不知道确切域名的情况下获取所有cookie.

任何建议表示感谢,D

cookies android android-cookiemanager

14
推荐指数
1
解决办法
3562
查看次数

Webview无法接受cookie

我正在创建一个基于WebView的Android应用程序,使用户可以登录移动运营商.当我运行应用程序时,WebView会打开网站,但我收到一条消息,表明WebView不允许使用cookie.我尝试过各种我在这里找到的代码,但都没有.谁能帮我?这是我正在使用的代码:

//in oncreate
final CookieSyncManager cookieSyncManager = CookieSyncManager.createInstance(this);
final CookieManager cookieManager = CookieManager.getInstance();
cookieManager.setAcceptCookie(true);
cookieManager.removeSessionCookie();
String[] cookies = getCookie("https://myaccount.ee.co.uk/login-dispatch/?fa=register");
for (String cookie : cookies) {
    cookieManager.setCookie("https://myaccount.ee.co.uk/login-dispatch/?fa=register", cookie);
}
cookieSyncManager.sync();
webView.loadUrl("https://myaccount.ee.co.uk/login-dispatch/?fa=register");
Run Code Online (Sandbox Code Playgroud)

和getCookies方法:

public String[] getCookie(String siteName) {
     CookieManager cookieManager = CookieManager.getInstance();
     String cookies = cookieManager.getCookie(siteName);
     String[] cookiesArray = cookies.split(";");
     return cookiesArray;
}
Run Code Online (Sandbox Code Playgroud)

cookies android android-webview android-websettings android-cookiemanager

13
推荐指数
2
解决办法
1万
查看次数

VM广泛的cookie管理意味着什么?

我正在学习cookies在Android中存储并遇到了几种实现它的方法.其中一个是使用CookieManager and CookieStore.

当我浏览Android文档时,我发现了以下声明:

为了在客户端和服务器之间建立和维护可能长期存在的会话,HttpURLConnection包括一个可扩展的cookie管理器.使用CookieHandler和CookieManager启用VM范围的cookie管理:

CookieManager cookieManager = new CookieManager();  
CookieHandler.setDefault(cookieManager);
Run Code Online (Sandbox Code Playgroud)

我不明白的意思VM-wide cookie management.我知道VM意味着Virtual Machine.

我的解释:

  1. 我解释它的一种方法是,创建CookieManager并传递它以setDefault()使其在整个应用程序中可用.因此,我尝试了以下测试.

     URL url = new URL("http://something.com");
     URI uri=new URI("http://something.com");
     urlConnection = (HttpURLConnection) url.openConnection();
     cks=urlConnection.getHeaderField("Set-Cookie");  
     //cks is a String
     cookieManager=new CookieManager();
     CookieHandler.setDefault(cookieManager);
     HttpCookie hc=new HttpCookie("Cookie1",cks);
     cookieManager.getCookieStore().add(uri,hc);
     cks1=cookieManager.getCookieStore().getCookies().get(0).getValue();
     //cks1 is another String
    
    Run Code Online (Sandbox Code Playgroud)

    我设置cks and cks1TextViews并按content/value预期打印cookie .根据我的解释,我尝试cookieManager.getCookieStore().getCookies().get(0).getValue();了另一个活动,但它没有识别出对象,这意味着它超出了范围而且无法访问.此外,创建了一个新的,CookieManager并尝试获取cookie,但它返回null.因此,我假设可以跨活动访问VM范围的这种解释是不正确的.

  2. 第二个解释是Cookies将在CookieManager设置时自动存储.我从SO的另一个问题的解决方案中得到了它:使用Java URLConnection进行Cookie管理

解决方案中的一个陈述如下: …

cookies android httpurlconnection android-cookiemanager android-sharedpreferences

8
推荐指数
1
解决办法
227
查看次数

如何在应用程序执行之间保留 webview cookie?

目前Android可以实现这个功能吗?我只能找到有关旧方法(CookieSynchManager)的已弃用问题,这实际上似乎不适用于此。

有可能实现吗?我在 Android 开发人员指南上也找不到任何内容。

cookies android webview android-webview android-cookiemanager

7
推荐指数
2
解决办法
6982
查看次数

如何使用net.java.CookieManager向/从SharedPreferences保存/加载cookie?

为了通过我在我HttpURLconnection使用的cookie管理会话

CookieManager cookieManager = new CookieManager();
CookieHandler.setDefault(cookieManager);
Run Code Online (Sandbox Code Playgroud)

现在,当我退出应用程序时,cookie将被删除.如何将它们保存到SharedPreferences并重新加载到CookieManager

android android-cookiemanager

6
推荐指数
0
解决办法
572
查看次数

Android WebView 获取原始cookie信息

我尝试在 Android WebView 中使用 CookieManager 获取 cookie 信息。然而,它所做的只是提供一个键值对 cookie,没有额外的信息。

我也尝试过这篇文章并用于connection.getHeaderFields.get("Set-Cookie");获取从服务器收到的所有 cookie。但据我所知,我没有看到我应该从服务器接收的所有 cookie。这也可以通过 CookieManger 中的某些 cookie 收到新值但未显示在Set-Cookie字段中来发现。

理想情况下,我想拦截每个响应并使用来自服务器的所有信息(如名称、值、最大年龄、安全等)检查他们的 cookie。有什么建议如何使用 Android WebView (WebViewClient) 执行此操作?

cookies android-webview webviewclient android-cookiemanager

6
推荐指数
0
解决办法
485
查看次数

会话Cookie不能永久改进Android

嗨,我目前正在开发一个使用Retrofit进行网络呼叫的Android应用程序.这是对我的要求的基本概述.

     1.Get Facebook access token and send it to the server.
     2.The server sets a Session cookie in the response.
     3.In all the upcoming requests send the session cookies back.

当前问题:
除非用户正在使用该应用程序(跨越不同的活动),否则我能够保持会话cookie活着.但是一旦用户退出应用程序,Cookie就会被删除.我已经在一个类似于Application类的类中声明了这些cookie .即使在应用程序退出后,我仍需要保持这些会话cookie活着.这样当用户再次打开我的应用程序时,我可以使用它们进行进一步处理.

以下是我在应用程序中实现的一些代码片段.

AppController.java(Application类的子类)


    public class AppController extends Application {
        private static AppController mInstance;
        private static OkHttpClient client;
        private static CookieManager cookieManager;
        private static Context context;
        private static AviyalApiService api; // custom interface having all the GET and POST 
        private static OkClient okClient;
        private static RestAdapter …

android facebook retrofit okhttp android-cookiemanager

5
推荐指数
1
解决办法
1806
查看次数

当您关闭应用程序时,CookieManager 是否会丢失 cookie?

我正在开发一个与服务器通信并有登录屏幕的应用程序。我正在使用 httpconnection 与服务器通信(服务器发回 Json 响应)。我的登录屏幕发送电子邮件和密码,由服务器验证 - 服务器发送 cookie 并期望每个进一步请求的 cookie 都知道用户已登录。

我正在使用 Cookiemanager 和 cookie 处理程序来启用会话,以便用户只需登录一次。

在我的主活动中使用以下 2 个命令(在 Create 方法上)

CookieManager cookieManager = new CookieManager();
CookieHandler.setDefault(cookieManager);
Run Code Online (Sandbox Code Playgroud)

工作模型是我的主要活动向服务器发送一个读取命令,该命令检查用户是否已经登录(期望内部带有 id 的 cookie),并以 json 形式发送状态。如果状态为 0,则移至登录活动,否则移至主屏幕。

在登录活动中,我发送带有用户名和密码的登录命令,服务器发送一个 cookie(发送一个唯一的 id,它会交叉检查任何进一步的请求以验证用户)并返回 json 响应。

登录后,我转到主屏幕并读取状态,因为我在主活动中创建了 CookieManager,所以它会自动随每个 httprequest 发送 cookie。

问题是——当我退出应用程序并在登录后返回时..它再次从主要活动开始并进入登录屏幕而不是主屏幕。我无法弄清楚为什么会这样,以及如何让我的用户登录一次,之后即使他退出应用程序,它也会保留 cookie。

我认为 CookieManager 即使在退出后也会保留 cookie。是否因为我在创建方法中创建 cookie Manager 对象,并且当应用程序退出并重新启动时,它再次创建新对象?或者我的假设是错误的。

java authentication cookies android android-cookiemanager

5
推荐指数
1
解决办法
2334
查看次数

CookieManager中有多个Cookie

让我们为cookie存储做准备:

CookieSyncManager.createInstance(getApplicationContext());
CookieSyncManager.getInstance().startSync();
CookieManager.getInstance().setAcceptCookie(true);
Run Code Online (Sandbox Code Playgroud)

然后,我手动放入一些cookie,让我们说PHPSESSIDRANDOM

CookieManager.getInstance().setCookie("domain.com", "PHPSESSID="+phpSession);
CookieManager.getInstance().setCookie("domain.com", "RANDOM="+random);
Run Code Online (Sandbox Code Playgroud)

我们使用以下命令检查它是否正常工作:

CookieManager.getInstance().getCookie("domain.com");
Run Code Online (Sandbox Code Playgroud)

并得到

PHPSESSID=dba4ff392agd39b5951d10a91a0a7b56; RANDOM=266284790:1466147978:c91d0896bac59e0b
Run Code Online (Sandbox Code Playgroud)

一切看起来都不错,但是当我导航到应用程序中的“ WebView活动” 之一时,该活动会打开同一域的网站并设置cookie,然后当我像上面那样打印cookie时,它看起来像这样:

PHPSESSID=dba4ff392agd39b5951d10a91a0a7b56;
RANDOM=266284790:1466147978:c91d0896bac59e0b;
PHPSESSID=9ecb5156cf8fc3190fbc69fd13393243;
RANDOM=265078219%3A1463147975%3Ad0448d163e9b2123
Run Code Online (Sandbox Code Playgroud)

重复的条目...之后,我再次手动设置例如RANDOM与setCookie

PHPSESSID=dba4ff392agd39b5951d10a91a0a7b56; 
RANDOM=111111111:2222222222:33333336bac59e0b;
PHPSESSID=9ecb5156cf8fc3190fbc69fd13393243; 
RANDOM=265078219%3A1463147975%3Ad0448d163e9b2123
Run Code Online (Sandbox Code Playgroud)

设置的值WebView不会被覆盖,只有我的“手动”输入...如何强制WebView使用我之前设置的cookie或已设置的覆盖?

cookies android android-webview android-cookiemanager

5
推荐指数
1
解决办法
3179
查看次数