我正在使用以下代码片段将cookie添加到使用Android的DefaultHttpClient发送的Android中的http请求中:
CookieStore cookieStore = new BasicCookieStore();
BasicClientCookie2 cookie = new BasicClientCookie2("AUTH_TOKEN", "MY_TOKEN");
cookie.setVersion(1);
cookie.setDomain("my.domain.com");
cookie.setPath("/");
cookieStore.addCookie(cookie);
context.setAttribute(ClientContext.COOKIE_STORE, cookieStore);
当我查看服务器上收到的cookie值时,我得到
Cookie: $Version=1; AUTH_TOKEN="MY_TOKEN"
但我期望的是(请注意缺少引号):
Cookie: $Version=1; AUTH_TOKEN=MY_TOKEN
不幸的是,多余的引号导致服务器(我无法管理)阻塞,并完全忽略了cookie。
我没有运气就尝试使用
BasicClientCookie
而不是BasicClientCookie2
。有没有解决的办法,或者我缺少明显的东西? 最佳答案
显然,在Cookie上调用cookie.setVersion(0);
应该可以解决此问题,因为根据this SO answer,在cookie规范的版本0中引号无效。
就我而言,由于这是我必须随请求发送的唯一cookie,因此我自己将其添加为标头:
post.addHeader(“Cookie”,“AUTH_TOKEN =” + myAuthToken);