2010-07-08 9 views
5

Ich möchte einen Beitrag zu Jersey Rest Service machen. Was ist der übliche Weg, dies zu tun?Jersey konsumiert XML-Post

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

Hmm. Möchten Sie einen Client-POST zu einem vorhandenen Service machen oder einen Jersey RESTful-Service implementieren? –

Antwort

4

Unten ist ein Beispiel für eine nach der Operation:

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

Angenommen, Sie haben einen Java Bean sagen Mitarbeiter Bohne wie. Fügen Sie die anzuzeigenden Tags hinzu

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

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

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

@XmlRootElement sagt, dass dies das Haupt-Tag in XML sein wird. In diesem Fall können Sie auch einen Namen für das Haupt-Tag angeben.

@XmlElement sagt, dass dies die Unter-Tag innerhalb des Root-Tag sein würde

Say, die Probe xml, die als Teil des Körpers in der Post-Anforderung kommen wird wie etwas aussehen

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

Wenn wir einen Webservice schreiben, um ein solches XML zu akzeptieren, können wir die folgende Methode schreiben.

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

Beim Aufruf dieses Dienstes erhalten Sie die folgende XML als Teil der Antwort.

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

mit @xml ... Anmerkungen, wird es sehr einfach, die Anfrage und Antwort Objekte zu entpacken und Marschall.

ähnlicher Ansatz kann stattdessen als Eingang für eine xml von APPLICATION_XML

also einfach durch Verwendung des MediaType.APPLICATION_JSON für JSON-Eingang sowie JSON Ausgang genommen werden, können Sie eine XML als eine Ausgabe im Rahmen der bekommen HTTP-Antwort Hoffe, das hilft.