如何使用JAX-RS客户端使用GET调用发送有效负载?

时间:2017-08-02 16:46:48

标签: java rest jax-rs jersey-2.0

我知道GET呼叫不应该有身体,但呼叫是由其他人开发的,我现在无法改变它。我想使用一个API,它是GET方法并采用有效负载(json体)。我可以使用GET方法传递路径参数而不是有效负载。我没有看到为GET呼叫发送有效负载的选项。

这是我正在做的GET电话。

import javax.ws.rs.client.Client;
import javax.ws.rs.client.ClientBuilder;
import javax.ws.rs.client.Entity;
import javax.ws.rs.core.MediaType;
import javax.ws.rs.core.Response;

Client client = ClientBuilder.newClient();
String targetUri = "http://" + service.getHost() + ":" + service.getPort() + PROFILES_URI;
Response response = client
            .target(target)
            .path(profileIds.get(0))
            .request(MediaType.APPLICATION_JSON)
            .get();

如果方法是PUT或POST,我可以发送有效载荷,如下所示。

Client client = ClientBuilder.newClient();
String target = "http://" + service.getHost() + ":" + service.getPort() + PROFILES_URI;
Response response = client
            .target(target)
            .request(MediaType.APPLICATION_JSON)
            .post(Entity.entity(profileIds, MediaType.APPLICATION_JSON));

如何使用GET调用发送有效负载?

参考:http://www.baeldung.com/jersey-jax-rs-client

1 个答案:

答案 0 :(得分:2)

  

我不是在这里开一个休息电话

实际上你是,因为javax.ws.rs是Java中RESTful Web服务的基础包,javax.ws.rs.client.Client是RESTfull Web服务客户端的基本接口:Overview of the Client API

据说,您可能需要构建自己的客户端,允许您在GET请求中发送有效负载,或者找到具有此类功能的现有Web服务客户端。

在GET请求中发送正文的正确性实际上是本Q& A中讨论过的另一个主题:HTTP GET with request body