我正在使用以下代码片段将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);

10-04 23:18