Tag: cookies

Android中的Http cookie商店

我正在为该网站开发一个授权的Android客户端。 我有一个post方法。 我的代码示例: public void run() { handler.sendMessage(Message.obtain(handler, HttpConnection.DID_START)); httpClient = new DefaultHttpClient(); HttpConnectionParams.setSoTimeout(httpClient.getParams(), 25000); HttpResponse response = null; try{ switch (method){ case POST: HttpPost httpPost = new HttpPost(url); httpPost.setHeaders(headers); if (data != null) httpPost.setEntity(new StringEntity(data)); response = httpClient.execute(httpPost); break; } processEntity(response); }catch(Exception e){ handler.sendMessage(Message.obtain(handler, HttpConnection.DID_ERROR, e)); } ConnectionManager.getInstanse().didComplete(this); } 如何保持cookies?

应该与CookieManager的HttpURLConnection自动处理会话cookie吗?

我有一个Java应用程序(JDK 1.7.0_13),并使用java.net.HttpURLConnection连接到一些基于servlet的服务进行会话管理。 我试图弄清楚如何使用java.net.CookieManager来跟踪会话cookie。 阅读文档我得到的印象是使用CookieHandler.setDefault(新的CookieManager())安装CookieManager会导致cookie管理自动发生。 但是,对同一URL的多个请求似乎不会保留cookie。 我是否必须手动从响应中提取cookie并在我自己的请求中重新发送它们,或者CookieManager是否会自动为我执行此操作? 如果CookieManager没有,那么它添加了什么值? 为了测试一些东西,我有一个servlet,每当我的浏览器访问一个URL时,它就会成功递增一个计数器。 这可以在Safari,FireFox和Chrome中正常工作……但是,我无法从独立的Java应用程序中使用它。 这是一个非常简单的测试程序,用于说明我希望简单的工作。 它在开始时安装CookieManager,然后在控制台输入URL时重复调用fetch(String urlString)方法。 package com.brilliant.experimental; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.net.CookieHandler; import java.net.CookieManager; import java.net.HttpURLConnection; import java.net.URL; public class HttpFetcher { public static void fetch(String urlString) { try { URL url = new URL(urlString); HttpURLConnection conn = (HttpURLConnection)url.openConnection(); InputStream in = conn.getInputStream(); […]

javax.ws.rs.core.Cookie vs javax.ws.rs.core.NewCookie,有什么区别?

我在JAX-RS API javax.ws.rs.core.Cookie和javax.ws.rs.core.NewCookie找到了两个类。 一个人比另一个人有什么好处? 我想知道建议使用哪一个以及何时使用? 提前致谢 :)

来自IE中的servlet的持久性cookie

我有一个从servlet生成的cookie,我想要持久化 – 也就是说,设置cookie,关闭IE,重新启动它,并且仍然能够读取cookie。 我正在使用的代码如下: HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance() .getExternalContext().getResponse(); Cookie cookie = new Cookie(“someKey”, “someValue”); cookie.setMaxAge(7 * 24 * 60 * 60); response.addCookie(cookie); 这在firefox中运行良好,但在IE 6/7中,cookie不会在浏览器重启之间保存。 我已经检查了我在设置中可以想到的所有内容,但无法弄清楚导致cookie被删除的原因。 据我所知,使用正数调用setMaxAge会使cookie持久化。 任何想法为什么会出错? 编辑 我已经使用Olaf建议的更多信息技巧validation了cookie是否正在尝试设置为会话cookie,而不是持久cookie; 最大年龄设置为“会话结束”。 所以看起来似乎没有为IE设置最大年龄 – 我已经validation在Firefox中,最大年龄设置正确。 我仍然不知道发生了什么。

通过HttpClient接受所有Cookie

所以这是我的应用程序的设置方式: 1.)登录活动。 2.)登录后,可能会启动其他活动,这些活动使用需要登录时发送的cookie的PHP脚本。 我在我的应用程序中使用一个HttpClient来确保使用相同的cookie,但我的问题是我收到了3个cookie中的2个被拒绝。 我不关心cookie的有效性,但我确实需要它们被接受。 我尝试设置CookiePolicy ,但这也没有用。 这就是logcat所说的: 11-26 10:33:57.613: WARN/ResponseProcessCookies(271): Cookie rejected: “[version: 0] [name: cookie_user_id][value: 1][domain: www.trackallthethings.com][path: trackallthethings][expiry: Sun Nov 25 11:33:00 CST 2012]”. Illegal path attribute “trackallthethings”. Path of origin: “/mobile-api/login.php” 11-26 10:33:57.593: WARN/ResponseProcessCookies(271): Cookie rejected: “[version: 0][name: cookie_session_id][value: 1985208971][domain: www.trackallthethings.com][path: trackallthethings][expiry: Sun Nov 25 11:33:00 CST 2012]”. Illegal path attribute “trackallthethings”. […]

如何使用Java在Http Get方法中设置Cookies

我想用cookies手动GET以下载和解析网页。 我需要提取安全令牌,以便在论坛上发帖。 我已完成登录,已阅读响应并提取了cookie(3对(名称,值))。 然后我写了包含这样的cookie的String: CookieString=”name1=value1; name2=value2; name3=value3″ 然后我做以下事情 HttpURLConnection connection connection = (HttpURLConnection)(new URL(Link).openConnection()); connection.setRequestMethod(“GET”); connection.setRequestProperty(“Connection”, “Keep-Alive”); connection.setRequestProperty(“Cookie”, CookieString ); connection.connect(); 然后我阅读了该页面,但它显示我没有登录论坛。 我究竟做错了什么? 编辑:我知道如果我想发帖,我必须提取安全令牌。 我的思路是,为了提取它,我需要获取这个特定的页面。 但是为了将安全令牌作为隐藏字段,我必须在线,因此我需要cookie。 但是,当我获取页面并设置上面提到的cookie时,我将该页面作为访客,它显示我不在线,安全令牌的值是guest,这对我没用。 我会检查你给我的链接,希望能找到解决方案。

在Java Servlet中,如何更改现有cookie的值?

在Java Servlet中,如何更改现有cookie的值? 有一个addCookie方法,但在HttpServletResponse中没有deleteCookie或editCookie

HttpClient警告:Cookie被拒绝:非法域属性

我正在使用HttpClient最新版本(4.x)。 而现在我正在尝试做一个GET请求。 我只是发布了一个Get请求。 这是我的代码; public class Poster { static boolean routing1 = true, routing2 = true; static int counter1 = 0, counter2 = 0; DefaultHttpClient oHtp = null; HttpGet oHGet = null; HttpResponse oHRes = null; private void test(String fullAddress) throws Exception { oHtp = new DefaultHttpClient(); oHGet = new HttpGet(fullAddress); HttpResponse response = oHtp.execute(oHGet); […]

使用Tomcat允许子域会话cookie的最佳方法

默认情况下,tomcat将为当前域创建会话cookie。 如果您在www.example.com上,您的cookie将为www.example.com创建(仅适用于www.example.com)。 而对于example.com,它将为.example.com创建(期望的行为,将适用于example.com的任何子域以及example.com本身)。 我已经看到一些Tomcat阀门似乎拦截会话cookie的创建并使用正确的.example.com域创建替换cookie,但是它们似乎都没有完美地工作,它们似乎都离开了现有的cookie并且只是创造一个新的。 这意味着每个请求都会发送两个JSESSIONID cookie。 我想知道是否有人对此问题有明确的解决方案。

如何在tomcat 8中将Cookie处理器更改为LegacyCookieProcessor

我的代码正在处理tomcat 8版本8.0.33但是在8.5.4我得到:为此cookie指定了无效的域[.mydomain]。 我发现Rfc6265CookieProcessor是在tomcat 8最新版本中引入的。 它在官方文档上说,这可以在context.xml中恢复为LegacyCookieProcessor,但我不知道如何。 请让我知道如何做到这一点。 谢谢