2010-07-08 11 views
5

Je veux faire un post au service Jersey Rest. Quelle est la manière standard de faire ceci?Jersey Consomme le message XML

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

Hmm. Voulez-vous faire un POST client à un service existant ou implémenter un service Jersey RESTful? –

Répondre

4

Voici un exemple d'une opération 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(); 
} 
6

Supposons que vous ayez un haricot java dire un haricot employé tel que. Ajoutez les étiquettes à dire

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

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

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

@XmlRootElement indique que ce sera la balise principale en XML. Dans ce cas, vous pouvez également spécifier un nom pour la balise principale.

@XmlElement dit que ce serait la balise sous dans la balise racine

Say, le xml exemple qui viendra comme une partie du corps dans la demande de poste ressemblera à quelque chose comme

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

Lorsque vous écrivez un webservice pour accepter un tel XML, nous pouvons écrire la méthode suivante.

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

Lors de l'appel de ce service, vous obtiendrez le code XML suivant dans le cadre de la réponse.

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

en utilisant @xml ... annotations, il devient très facile de désorganiser et le maréchal des objets de requête et de réponse.

Une approche similaire peut être prise pour l'entrée JSON ainsi que JSON en utilisant simplement la MediaType.APPLICATION_JSON au lieu de APPLICATION_XML

Donc, pour un xml comme entrée, vous pouvez obtenir un fichier XML en sortie dans le cadre du Réponse http. J'espère que cela aide.