web-dev-qa-db-ja.com

POST JAX-RS2.0クライアントAPIを使用

フォームパラメータを使用してRESTサービスを公開するPOSTサービスがあります:

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

} 

JAX-RSクライアントAPIを使用してこのサービスを呼び出す方法を見つける必要があります。残念ながら、ネット上で利用可能な唯一の例は、Webターゲットリソースに渡されるEntityクラスを利用しています。

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

単一のパラメーター(おそらくフォームパラメーター)を渡してサービスを呼び出す方法はありますか?ありがとう!

10
user2824073

使用する必要があります:javax.ws.rs.client.Entity<T> と組み合わせ javax.ws.rs.core.Form。簡単な例を次に示します。

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