java - Android:BasicClientCookie/CookieStore 在 cookie 值周围添加引号

标签 java android cookies apache-commons-httpclient

我使用以下代码 fragment 将 cookie 添加到 Android 中的 http 请求,使用 Android 的 DefaultHttpClient 发送:

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,所以我自己简单地将它添加为 header :

post.addHeader("Cookie", "AUTH_TOKEN=" + myAuthToken);

关于java - Android:BasicClientCookie/CookieStore 在 cookie 值周围添加引号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19921514/

相关文章:

main函数返回后java进程仍然存在

java - 能够运行 shell 脚本,但不能运行来自 java 的 Runtime.getRuntime().exec() 的 curl 命令

java - 字符串格式参数在 android 上的 string.xml 中不起作用

android - 将蓝牙设备安全连接到 Android

c# - HttpWebRequest:将 Cookie 添加到 CookieContainer -> ArgumentException(参数名称:cookie.Domain)

java - 如何将 Java ExecutorService 线程池用于正在进行的/无限的任务?

android - DragEvent.ACTION_DROP 永远不会被调用

android - 从 FCM 通知访问、打开或编辑 Web View

javascript - Cookie 还是本地存储?

scala - 从 Akka HttpResponse 检索 Cookie