【问题标题】:URLConnection with Cookies?带有 Cookie 的 URL 连接?
【发布时间】:2011-09-15 07:21:47
【问题描述】:

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

CookieManager cookieManager = new CookieManager();
CookieHandler.setDefault(cookieManager);

我无法让这段代码工作,然后我发现这仅适用于 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);
            }

但这不起作用。

【问题讨论】:

  • 这种情况下你是客户端还是服务端?如果您是客户,为什么要使用Set-Cookie 标头?
  • 这个客户端读取这个,它是由服务器发送的。 curl.haxx.se/rfc/cookie_spec.html
  • 哦,伙计,你救了我的命......不是答案,而是你的问题......谢谢 loooooooooooooooootttttttttttttttttttttttt
  • @SushilKumar 你是什么意思?

标签: java android cookies urlconnection


【解决方案1】:

我能够使用 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);
            ... 

【讨论】:

  • 这是一个相当不错的基本 cookie 管理器。我喜欢。我也觉得奇怪的是,Android 工程师花了这么长时间才包含java.net.CookieManager 类。在任何一种情况下,我相信这两个类(Ian 的和 java.net 的)只临时存储 cookie(即它们只会保留到应用程序进程被终止)。所以很有可能下次用户启动应用程序时,他们需要再次登录/等等?
  • 是的,除非您序列化该类并将其保存在某处。此外,离开和返回应用程序并不足以“退出”应用程序,因此应保留 cookie 和浏览器会话。
  • 是的,用户必须在中间做一些内存密集型的工作才能让系统杀死应用程序进程。序列化 cookie 管理类是一个好主意。最好使用openFileOutput() 将其写入内部存储?现在我使用一个非常基本的方法,我只将返回给我的单个会话 cookie 作为String 保存在SharedPreferences 中。不过,我想我现在会尝试使用这个可序列化的 cookie 管理器。
猜你喜欢
  • 2010-10-18
  • 2013-07-23
  • 1970-01-01
  • 2022-07-31
  • 2021-12-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-28
相关资源
最近更新 更多