如何使用 Jersey 将 POJO 序列化为查询参数

2024-04-01

我一直在为公司的不同服务尝试并创建多个小型 Java RESTful 客户端库。大多数时候,我无法更改服务器端的任何内容,我需要编写Jersey https://jersey.java.net与现有 RESTful API 交互的代码片段。


Context

据了解,我一直在使用 JerseyJackson http://jackson.codehaus.org使用 JSON:当我查询 POJO 时,我将其从 JSON 反序列化,当我需要发送 POJO 时,我将其序列化为 JSON 主体。到目前为止,这两种片段一直在为我做工作......

查询和反序列化

ClientResponse response = webResource
    .path("/path/to/resource")
    .queryParam("key", "value")
    .accept(Mediatype.APPLICATION_JSON)
    .get(ClientResponse.class);

// (...) Check response status code

MyClassPojo pojo = response.getEntity(MyClassPojo.class);

序列化和发送

ClientResponse response = webResource
    .path("/path/to/resource")
    .type(Mediatype.APPLICATION_JSON_TYPE)
    .accept(Mediatype.APPLICATION_JSON)
    .post(ClientResponse.class, pojo)

// (...) Check response status code

Issue

我现在面临着一个 RESTful 服务器,它不接受 JSON 主体来发送我的 POJO。唯一有效的方法是使用查询参数。

例如,如果我想发送对象

public MyClassPojo {
    public int attr1;
    public String attr2;
}

MyClassPojo pojo = new MyClassPojo();
pojo.attr1 = 42;
pojo.attr2 = "Foo bar";

我很想用 JSON 序列化它:

{
    "attr1": 42,
    "attr2": "Foo bar"
}

但这个特定的 RESTful 服务器需要查询参数:

?attr1=42&attr2=Foo+bar

Question

这有点糟糕,但我真的别无选择……我现在希望有一种简单的方法可以用 Jersey 实现这一点:如何自动将对象序列化为查询参数,以发送到 RESTful 服务器?

Note:我在@Jukka 回答后关闭了这个问题。如果您像我一样实际上正在寻找一种发送 x-www-form-urlencoded 数据的方法,请毫不犹豫地提及您创建的新问题。我即将开始做一些事情......


我将在您的 POJO 中实现这种视图:

class Pojo {
    ...
   public MultiValuedMap<String,String> asQueryParams() {
       ...
   }
}

并将结果传递给WebResource.queryParams(..).

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Jersey 将 POJO 序列化为查询参数 的相关文章

  • 非易失性领域的出版与阅读

    public class Factory private Singleton instance public Singleton getInstance Singleton res instance if res null synchron
  • 在不支持 CAS 操作的处理器上进行 CompareAndSet

    今天 我在一次采访中被问到下一个问题 如果您在具有不支持 CAS 操作的处理器的机器上调用 AtomicLong 的compareAndSet 方法 会发生什么情况 您能否帮我解决这个问题 并在可能的情况下提供一些全面描述的链接 From
  • CakePHP 3 API 的 POST 请求不起作用

    我正在使用 CakePHP 3 x 文档开发 API 为了开发这个 API 我使用了他们的官方文档 https book cakephp org 3 0 en development rest html https book cakephp
  • Java LostFocus 和 InputVerifier,按反向制表符顺序移动

    我有一个 GUI 应用程序 它使用 InputVerifier 在产生焦点之前检查文本字段的内容 这都是很正常的 然而 昨天发现了一个问题 这似乎是一个错误 但我在任何地方都找不到任何提及它的地方 在我将其报告为错误之前 我想我应该问 我在
  • 无法使用 datastax java 驱动程序通过 UDT 密钥从 cassandra 检索

    我正在尝试使用用户定义的类型作为分区键将对象存储在 cassandra 中 我正在使用 datastax java 驱动程序进行对象映射 虽然我能够插入到数据库中 但无法检索该对象 如果我更改分区键以使用非 udt 例如文本 我就能够保存和
  • getCurrentSession 在网络中休眠

    我正在使用 hibernate 和 jsp servlet 编写一个基于 Web 的应用程序 我读过有关sessionFactory getCurrentSession and sessionFactory openSession方法 我知
  • 2^31 次方的 Java 指数错误 [重复]

    这个问题在这里已经有答案了 我正在编写一个java程序来输出2的指数幂 顺便说一句 我不能使用Math pow 但是在 2 31 和 2 32 处我得到了其他东西 另外 我不打算接受负整数 My code class PrintPowers
  • 如何更改 Swagger-ui URL 前缀?

    我正在使用 Springfox Swagger2 和 Spring boot 1 5 9 我可以通过此链接访问 swagger UI http localhost 8090 swagger ui html http localhost 80
  • 使用 JDBC 连接到 PostgreSql 的本地实例

    我在 Linux 机器上有一个正在运行的 PostgreSql 本地实例 当我使用psql来自 shell 的命令我成功登录 没有任何问题 我需要通过 JDBC 连接到 PostgreSql 但我不知道我到底应该传递什么url参数为Driv
  • 如何使用双重调度来分析图形基元的交集?

    我正在分析图形基元 矩形 直线 圆形等 的交互并计算重叠 相对方向 合并等 这被引用为双重调度的一个主要示例 例如维基百科 http en wikipedia org wiki Double dispatch 自适应碰撞算法通常要求 不同的
  • 使用 Proguard 通过 Dropbox.com 库混淆 Android 应用程序

    我刚刚创建了一个需要 Dropbox com API 库的 Android 应用程序 我现在尝试在 发布 模式下构建应用程序 并希望在代码上运行混淆器以对其进行混淆 但是 每当我尝试运行 Proguard 时 都会收到以下错误 Progua
  • 类更改(例如字段添加或删除)是否保持 Serialized 的向后兼容性?

    我有一个关于 Java 序列化的问题 在这种情况下 您可能需要修改可序列化类并保持向后兼容性 我有丰富的 C 经验 所以请允许我将 Java 与 NET 进行比较 在我的Java场景中 我需要使用Java的运行时序列化机制序列化一个对象 并
  • 我所有的 java 应用程序现在都会抛出 java.awt.headlessException

    所以几天前我有几个工作Java应用程序使用Swing图书馆 JFrame尤其 他们都工作得很好 现在他们都抛出了这个异常 java awt headlessexception 我不知道是什么改变了也许我的Java版本不小心更新了 谢谢你尽你
  • Spring Data Rest 多对多 POST

    首先 让我解释一下我的用例 这非常简单 有一个用户实体和一个服务实体 我使用 UserService 作为连接实体 连接表 在用户和服务之间建立多对多关联最初 会有一些用户集和一些服务集 用户可以在任何时间点订阅任何服务 在这种情况下 将向
  • 确定 JavaFX 中是否消耗了事件

    我正在尝试使用 JavaFX 中的事件处理来做一些非滑雪道的事情 我需要能够确定手动触发事件后是否已消耗该事件 在以下示例中 正确接收了合成鼠标事件 但调用 Consumer 不会更新该事件 我对此进行了调试 发现 JavaFX 实际上创建
  • 检测到 JVM 正在关闭

    我有一个使用 addShutdownHook 处理 Ctrl C 的 Swing 应用程序 它工作正常 直到我的关闭任务之一调用一个在正常情况下更改 JLabel 文本的函数 此时它挂起 我认为问题是 Swing EDT 已终止或正在等待某
  • Java 的“&&”与“&”运算符

    我使用的示例来自 Java Herbert Schildt 的完整参考文献 第 12 版 Java 是 14 他给出了以下 2 个示例 如果阻止 第一个是好的 第二个是错误的 因此发表评论 public class PatternMatch
  • 在会话即将到期之前调用方法

    我的网络应用程序有登录的用户 有一个超时 在会话过期之前 我想执行一个方法来清理一些锁 我已经实现了sessionListener但一旦我到达public void sessionDestroyed HttpSessionEvent eve
  • 设置 TreeSet 的大小

    有没有办法像数组一样对 Java 集合中的 TreeSet 进行大小限制 例如我们在数组中 anArray new int 10 数组具有固定长度 在创建数组时必须指定该长度 A TreeSet当您向其中添加元素时会自动增长 您无法设置其大
  • 关闭扫描仪是否会影响性能

    我正在解决一个竞争问题 在问题中 我正在使用扫描仪获取用户输入 这是 2 个代码段 一个关闭扫描器 一个不关闭扫描器 关闭扫描仪 import java util Scanner public class JImSelection publ

随机推荐

  • 如何为 Android 发送库

    我想为 Android 开发一个库 我可以以什么形式运送 jar apk 还是其他 我应该如何做才能让其他开发人员可以在他们的应用程序中使用我的库 如果您的库是纯 Java 代码 则 JAR 就可以了 也许可以用文档等进行压缩 如果您需要资
  • 如何将 SVN 存储库移至新服务器

    我们想要将两台服务器合并在一起 为此 我们需要在 新 服务器上安装 SVN 然后移动我们在 旧 服务器上设置的所有存储库 这是一个容易做的操作吗 可能使用 TortoiseSVN 提供的 重新定位 选项 最好的方法是什么 现在也是重新组织存
  • Hibernate多态查询

    我有两个类 Person 和 Company 它们派生自另一个类 Contact 它们在两个表 个人和公司 中以多态形式表示 简化的类如下所示 public abstract class Contact Integer id public
  • 如何将两个数据帧与日期进行比较,返回匹配日期并为新数据帧中的每一行标记不匹配日期

    我有一个数据框 每行中的每个受试者都有多个测量日期 另一个数据框有每行中同一受试者的多个访问日期 还包括一些 NA 我想要的是提取与某个主题的访问日期匹配的测量日期 并标记不符合访问日期的测量日期 例如 使用 FALSE 或 99 并保持
  • 如何用另一个 GestureDetector 包装 GestureDetector 并在各处获取事件

    如果我有一个GestureDetector具有内部GestureDetector我该如何设置才能使两个检测器都收到点击事件 您可以在此处查看运行代码 https dartpad dev 37807a51a48e52eda81c24cf672
  • HTML 和属性编码

    我遇到了一个发表在 Meta SO 上 https meta stackexchange com questions 104230 attack of the double encoded hellip part n我很好奇未编码和编码的
  • MVC3 C# 导出到 Excel

    我正在尝试将数据从数据库导出到 Excel 2007 文件 我只想将 html 文件的标题更改为 excel 2007 文件 我将数据格式化为表格并将标题更改为 Response AddHeader Content Disposition
  • BuildException:无法在 Android Studio 3.1 Canary 6 中执行 aapt

    我在 gradle 构建过程中遇到这个问题 org gradle tooling BuildException Failed to execute aapt at com android build gradle internal res
  • Wifi和3G同时使用

    对于我的应用程序 我需要来自本地网络和互联网的数据 本地网络 Wifi 无法连接到互联网 因此我必须使用移动连接 例如 3G 但每当我连接到本地网络时 3G 就会停止 询问三星服务后 无法在 UI 中更改该设置 但他们无法告诉我是否有可编程
  • Kotlin - 将集合转换为数组列表

    我正在将 Java 应用程序转换为 Kotlin 在某一方面 它使用 apache IO 的 FileUtils listFiles 函数 这些返回集合 我在将集合转换 转换为 ArrayList 时遇到问题 val myFiles Fil
  • SQL - 从数据库中选择最“活跃”的时间

    非常密切相关SQL 从数据库中选择最 活跃 的时间跨度 https stackoverflow com questions 12938302 sql select most active timespan fromdb但不同的问题 我有一个
  • 如何让我的 NextJS 应用程序接受 otf 和 ttf 字体?

    我正在使用 NextJS 当我构建我的应用程序时 我的控制台返回给我 ModuleParseError 模块解析失败 意外字符 1 0 您可能需要适当的加载程序来处理此文件类型 我想知道出了什么问题 因为我已经构建了自定义 webpack
  • jquery动画位置百分比

    如何确定百分比位置 document ready function button toggle function slide animate top 100 1000 function slide animate top 0 1000 请建
  • Magento 的空白主题是否仍应用作主题基线(Magento 版本 1.7)?

    我发现的许多关于 Magento 主题开发的教程都建议从使用空白作为制作您自己的自定义主题的指南开始 这些文章很多都已经很老了 截至当前版本 1 7 情况仍然如此吗 附 除了 Magento 之外 是否有任何好的 相关的主题开发文章官方设计
  • 如何在 WPF 拖放过程中更新拖动装饰器的位置?

    我正在使用装饰器来显示被拖动元素的 幽灵 var adornerLayer AdornerLayer GetAdornerLayer topLevelGrid dragAdorner new DragAdorner topLevelGrid
  • 如何调试“ImagePullBackOff”?

    突然间 我无法部署一些以前可以部署的映像 我得到以下 Pod 状态 root webdev2 origin oc get pods NAME READY STATUS RESTARTS AGE arix 3 yjq9w 0 1 ImageP
  • 如何覆盖 django admin 翻译?

    我正在尝试覆盖 Django 管理站点的默认翻译 我正在使用 Django 1 6 我的settings py包含 import os BASE DIR os path dirname os path dirname file LANGUA
  • 在 Dart 中向套接字数据写入/读取字节数

    在下面的服务器 客户端套接字代码中 服务器尝试发送从 0 到 1023 的整数 客户端收到正确数量的整数 但它们在 255 处换行 为什么会这样以及正确的方法是什么 服务器 import dart async import dart io
  • 如何从移动浏览器启动应用程序(facebook/twitter/等),但如果未安装应用程序则退回到超链接

    我希望可能有某种方法可以从浏览器中检测 uri scheme 是否在移动设备上注册 IE 我想检查 facebook twitter pinterest 应用程序是否已安装并且可以从其关联的 uri scheme 启动 if fb isIn
  • 如何使用 Jersey 将 POJO 序列化为查询参数

    我一直在为公司的不同服务尝试并创建多个小型 Java RESTful 客户端库 大多数时候 我无法更改服务器端的任何内容 我需要编写Jersey https jersey java net与现有 RESTful API 交互的代码片段 Co