2014-05-22 12 views
8

Ho un servizio REST che espone un servizio POST tramite il modulo Parametri:POST utilizzando JAX-RS Client API 2.0

@POST 
@Path("/add") 
@Produces("text/html") 
public Response create(@FormParam("key")String key, 
      @FormParam("value")String value) 
{  
    service.addToList(key,value);  
    return Response.ok(RESPONSE_OK).build();  

} 

Ho bisogno di trovare una via d'uscita per invocare questo servizio utilizzando il client API JAX-RS . Purtroppo gli unici esempi disponibili sul fare uso netto di una classe di entità che viene passato al vostro risorsa di destinazione Web:

StoreOrder order = new StoreOrder(...); 
WebTarget myResource = client.target("http://example.com/webapi/write"); 
TrackingNumber trackingNumber = myResource.request(MediaType.APPLICATION_XML) 
            .post(Entity.xml(order), TrackingNumber.class); 

Qualsiasi idea di come posso invocare il mio servizio il passaggio di parametri singoli (forse i parametri di modulo)? Grazie!

risposta

15

È necessario utilizzare: javax.ws.rs.client.Entity<T> combinato con javax.ws.rs.core.Form. Ecco un semplice esempio:

Client client = ClientBuilder.newClient(); 
WebTarget target = client.target("http://localhost:9998").path("resource"); 

Form form = new Form(); 
form.param("key", "foo"); 
form.param("value", "bar"); 

TrackingNumber requestResult = 
target.request(MediaType.APPLICATION_JSON_TYPE) 
    .post(Entity.entity(form,MediaType.APPLICATION_FORM_URLENCODED_TYPE), 
     TrackingNumber.class); 
Problemi correlati