使用JAX-RS 2.0客户端API进行POST请求

11

我有一个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目标资源的实体类:

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

您知道我如何通过传递单个参数(可能是表单参数)来调用我的服务吗? 谢谢!

1个回答

29

您应该使用: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);

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接