java - 为每个客户端维护与 jersey CLIENT 的 cookie session

标签 java jersey jersey-2.0 jersey-client

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

我正在查询一个休息端点,它向我发送回一个像这样的 cookie

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

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

但是 Jersey 可以自动管理每个客户端的 cookie 处理吗?并根据例如路径将需要发回的内容发回。

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

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

Jersey 可以帮我做吗?

最佳答案

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

按照建议,我开始创建自己的过滤器,一切似乎都很好!但有时我发现我的 cookie 是重复的。

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

我注意到,从我的应用程序显示 WebView 时起,我的 cookie 就被复制了。 我在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());

我让你检查一下文档 herehere了解如何使用它

关于java - 为每个客户端维护与 jersey CLIENT 的 cookie session ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61254795/

相关文章:

java - 从终止当前面板的另一个类(方法)的面板调用方法

jsp - Jetty 在使用 Jersey-Guice-Shiro 栈时找不到 login.jsp

rest - QueryParam 与 Jersey 中的枚举绑定(bind)

jakarta-ee - "Already connected"在 docker 容器内运行 jersey 应用程序时出现异常

java - 基本计算器android开发失败

java - 如何在用 C 编写的服务器程序中反序列化 Java 对象?

java - gwt 应用程序突然停止运行

java - Jersey 中溢出 @QueryParams Integer

java - 无法从http请求获取JSON

java - 如何在 Tomcat 上的 JAX-RS (Jersey) 中返回 HTTP 404 JSON/XML 响应?