与Cookie的URLConnection?

NoB*_*ugs 20 java cookies android urlconnection

我正在尝试创建一个支持cookie的URLConnection.根据我可以使用的文档:

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

我无法使用此代码,然后我看到这只适用于API 9(2.3).但是,我在旧的模拟器中使用CookieManager时没有出错,CookieManager存在,但无法构造.有没有办法让这个版本适用于早期版本?我试过了:

            cookieManager.setAcceptCookie(true);
            URLConnection con = u.openConnection();

            con.setRequestProperty("Cookie", cookieManager.getInstance().getCookie(url););
            con.setDoOutput(true);
            con.connect();
            String addCookie = con.getHeaderField("Set-Cookie");
            System.out.println(con.getHeaderFields().toString());
            if (addCookie!=null) {
                cookieManager.getInstance().setCookie(url, addCookie);
            }
Run Code Online (Sandbox Code Playgroud)

但这不起作用.

NoB*_*ugs 14

我能够使用Ian Brown的CookieManager类启用cookie:http://www.hccp.org/java-net-cookie-how-to.html

我将它重命名为IansCookieManager,设置一个类变量_CM = new IansCookieManager,现在很简单:

            URLConnection conn = u.openConnection();
            _CM.setCookies(conn);
            conn.connect();
            _CM.storeCookies(conn);
            ... 
Run Code Online (Sandbox Code Playgroud)

  • 这是一个非常好的基本cookie经理.我喜欢.我也觉得奇怪的是,Android工程师花了很长时间才包含`java.net.CookieManager`类.在任何一种情况下,我相信这两个类(Ian和java.net)只暂时存储cookie(即它们只会被保留,直到应用程序进程被终止).因此,下次用户启动应用程序时,它们很可能需要再次登录/等等? (2认同)
  • 没错,除非你将类序列化并保存在某个地方.此外,离开和返回应用程序还不足以"退出"应用程序,因此应保留cookie和浏览器会话. (2认同)