我正在使用 jersey-client-1.9
. 示例代码:
import com.sun.jersey.api.client.Client;
import com.sun.jersey.api.client.ClientResponse;
import com.sun.jersey.api.client.WebResource;
Client client = Client.create();
webResource = client.resource("http://localhost:8047/storage/hive.json");
String input = //rest request
ClientResponse response = webResource.type("application/json").post(ClientResponse.class, input);
String queryRespose = response.getEntity(String.class);
由于该项目已从 com.sun.jersey.api.client
更改为 org.glassfish.jersey.client
. 如何在 jersey-client-2.8
实现这一目标?
Edit:
import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Entity;
import javax.ws.rs.client.WebTarget;
import javax.ws.rs.core.Response;
Client client = ClientBuilder.newClient();
WebTarget target = client.target("http://localhost:8047/query.json");
String input =//rest request
Response response = target.request().post(Entity.json(input));
String queryRespose = response.readEntity(String.class);
这工作...... :)
1 回答
使用Jersey 2.x,您可以使用
ClientBuilder
构建Client
在Jersey 2.x
WebTarget
类似于Jersey 1.xWebResource
,而不是调用client.resource()
来获得WebResource
,而是调用client.target()
来获得WebTarget
然后你需要在
WebTarget
上调用request()
来获得Invocation.Builder,这将允许你链接其他调用要发送实体,我们需要将Entity传递给
Invocation.Builder
的请求方法之一 . 例如要阅读回复,请使用
response.readEntity(String.class)
. 总而言之,你可以做到See Also:
how to send json object from REST client using javax.ws.rs.client.WebTarget
Client API documentation
更新
对于JSON / POJO支持,您可能还需要以下依赖项
然后在客户端注册
JacksonFeature
. 这是input
(如果你想使用POJO而不是String)可以序列化为JSON