为每个客户维护与球衣客户的 cookie 会话

Maintain cookie session with jersey CLIENT per client

我正在使用球衣 API 的 客户端 部分。

我正在查询一个 rest 端点,该端点向我发送一个像这样的 cookie

Set-Cookie: SessionId=270080680;path=/myPath

阅读文档和其他 Stack Overflow 答案后,我能够检索 cookie 并将其发回。

但是 Jersey 可以为每个客户端自动管理这个 cookie 处理吗?并把需要发回的按路径发回。

正如评论中所建议的那样,正确的方法似乎是创建一个过滤器并拦截存储和重新发送 cookie 的请求。

这解决了一部分问题,我仍然需要聪明并检查端点的路径以了解我应该发送哪个 cookie。

球衣可以帮我做吗?

并不适用于所有人,但就我而言,此解决方案非常适合!所以我决定分享一下

按照建议,我开始创建自己的过滤器,一切正常!但有时我看到我的cookie被复制了。

在挖掘之后,这就是我发现的,所以我处于 JavaFX 应用程序的特定上下文中,并使用依赖于 HttpURLConnection 的最简单的球衣客户端实现。

我注意到我的 cookie 在我的应用程序显示 WebView 时重复了。 我在 WebPage.java

中找到了这段代码
    if (CookieHandler.getDefault() == null) {
        boolean setDefault = Boolean.valueOf(System.getProperty(
                "com.sun.webkit.setDefaultCookieHandler",
                "true"));
        if (setDefault) {
            CookieHandler.setDefault(new CookieManager());
        }
    }

所以这个错误实际上是我的答案。在我的案例中,已经有人负责管理 cookie

管理所有 cookie jvm 的一行代码是:

CookieHandler.setDefault(new CookieManager());

我让你查看文档 here and here 了解如何使用它