java - jersey 客户端可以使用 JSON 将 JAXB 对象 POST 到服务器吗?

标签 java rest jersey jersey-client jersey-1.0

我找到了很多关于如何设置 Jersey 服务器以便它可以生成和使用 JAXB 绑定(bind)对象的示例,但我无法找到如何让客户端发布相同的 JAXB 绑定(bind)对象的示例。 This example shows how to do it with XML 。我正在寻找一个展示如何使用 JSON 来完成此操作的人。

我什至不确定这是否可行。 post 上的 javadoc方法不明确。

我的帖子如下所示:

    Client client = Client.create();
    WebResource resource = client.resource(uri);
    ClientResponse response = resource.type(MediaType.APPLICATION_JSON)
      .post(ClientResponse.class, instanceWithXmlRootElementAnnotation);

当我尝试此操作时,我的服务器收到请求,但 @FormParam 的字段始终以 null 形式发送。这是我的服务器端方法的签名:

@POST
@Path("apath")
@Consumes(MediaType.APPLICATION_JSON)
public String postAPath(@FormParam("InstanceWithXmlRootElementAnnotation")
  InstanceWithXmlRootElementAnnotation instanceWithXmlRootElementAnnotation) {
//instanceWithXmlRootElementAnnotation is always null

我想知道是否应该使用 instanceWithXmlRootElementAnnotation。如果这是传统的 Web 服务,我将使用 JAXB 生成一个对象供客户端使用并通过生成的类发送。但从我从链接的示例中收集到的信息来看,这个人正在发送源代码,而不是生成的类。

最佳答案

我自己想出来了。问题是服务器端问题。当我删除服务器上的 @FormParam 注释后,一切都按预期工作。综合问题和答案将为其他人提供基本教程。我的服务器现在看起来像:

@POST
@Path("apath")
@Consumes(MediaType.APPLICATION_JSON)
public String postAPath(InstanceWithXmlRootElementAnnotation instanceWithXmlRootElementAnnotation) {

关于java - jersey 客户端可以使用 JSON 将 JAXB 对象 POST 到服务器吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18665617/

相关文章:

java - 以编程方式刷新/重新启动当前 Tomcat 实例

java - 如何设置 Maven 以在运行测试时覆盖另一个设置文件?

javascript - AngularJS 进行 REST 调用并在浏览器中显示结果

REST 将创建资源的表示或创建并传输资源的表示?

java - java中的elasticsearch聚合用于elasticsearch中的所有索引

Java程序只写最后一行?

rest - 用于处理多个参数的 Grails rest-api 应用程序

java - ServiceLocator如何在HK2中自动找到@Service和@Contact?

java - 配置 Jersey 时,Spring Boot HandlerInterceptor 没有触发?

java - Weblogic 12.1.2 和 Jersey 2.0