【问题标题】:Jersey Consumes XML postJersey 使用 XML 帖子
【发布时间】:2010-07-08 13:19:41
【问题描述】:

我想发布一个 Post to Jersey Rest 服务。这样做的标准方法是什么?

@Post
@Consumes(MediaType.Application_xml)
public Response method(??){}

【问题讨论】:

  • 嗯。您是想让客户端 POST 到现有服务还是实现 Jersey RESTful 服务?

标签: xml post jersey


【解决方案1】:

假设你有一个 java bean,比如一个员工 bean。添加标签告诉

@XmlRootElement (name = "Employee")
public class Employee {
    String employeeName;

    @XmlElement
    public String getEmployeeName() {
        return employeeName;
    }

    public void setEmployeeName(String employeeName) {
        this.employeeName = employeeName;
    }
}

@XmlRootElement 告诉这将是 xml 中的主要标记。在这种情况下,您也可以指定主标签的名称。

@XmlElement 告诉这将是根标签内的子标签

比如说,将作为 post 请求正文的一部分的示例 xml 看起来像

<?xml version="1.0" encoding="UTF-8"?>
<Employee>
 <employeeName>Jack</employeeName>
</Employee>

在编写webservice来接受这样的xml时,我们可以编写如下方法。

@POST
@Path("/post")
@Consumes(MediaType.APPLICATION_XML)
@Produces(MediaType.APPLICATION_XML)
public Response getEmployee(Employee employee) {
     employee.setEmployeeName(employee.getEmployeeName() + " Welcome");
     return Response.status(Status.OK).entity(employee).build();
}

在调用此服务时,您将获得以下 xml 作为响应的一部分。

<Employee>
<employeeName> Jack Welcome </employeeName>
</Employee>

使用@Xml...注解,解组和编组请求和响应对象变得非常容易。

仅使用 MediaType.APPLICATION_JSON 而不是 APPLICATION_XML 即可对 JSON 输入和 JSON 输出采取类似的方法

因此,对于作为输入的 xml,您可以将 xml 作为输出作为 http 响应的一部分。 希望这会有所帮助。

【讨论】:

    【解决方案2】:

    下面是一个post操作的例子:

    @POST
    @Consumes({"application/xml", "application/json"})
    public Response create(@Context UriInfo uriInfo, Customer entity) {
        entityManager.persist(entity);
        entityManager.flush();
    
        UriBuilder uriBuilder = uriBuiler.path(String.valueOf(entity.getId()));
        return Response.created(uriBuilder.build()).build();
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-03-06
      • 1970-01-01
      • 2013-10-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多