2014-05-22 9 views
8

Mam REST usługa, która odsłania się poczta formularz Parametry:POST przy użyciu JAX-RS 2.0 Client API

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

} 

Muszę znaleźć drogę wyjścia do wywołania tej usługi przy użyciu klienta API JAX-RS . Niestety tylko przykłady dostępnych w sieci skorzystać z klasy podmiotu, który jest przekazywany do docelowego zasobu WWW:

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); 

Każdy pomysł w jaki sposób można wywołać moją usługę przechodzącego pojedynczych parametrów (może parametry formularza)? Dzięki!

Odpowiedz

15

Powinieneś użyć: javax.ws.rs.client.Entity<T> w połączeniu z javax.ws.rs.core.Form. Oto prosty przykład:

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); 
Powiązane problemy