Джерси потребляет сообщение XML - PullRequest
5 голосов
/ 08 июля 2010

Я хочу сделать пост на Джерси Отдых службы. Какой стандартный способ сделать это?

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

Ответы [ 2 ]

6 голосов
/ 15 февраля 2012

Предположим, у вас есть боб Java, скажем, боб сотрудника, например.Добавьте теги, чтобы сообщить

@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 говорит, что это будет вложенный тег внутри корневого тега

Скажем, образец xml, который будет отображаться какчасть тела в почтовом запросе будет выглядеть примерно так:

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

При написании веб-сервиса для приема такого 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 ... становится очень легко разобрать и упорядочить объекты запроса и ответа.

Аналогичный подход можно использовать для ввода JSON, а также для вывода JSON, просто используя MediaType.APPLICATION_JSON вместо APPLICATION_XML

Так что для XML в качестве ввода вы можете получить XML в качестве вывода как часть ответа http,Надеюсь, это поможет.

4 голосов
/ 29 июля 2010

Ниже приведен пример почтовой операции:

@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();
}
...