【问题标题】:How do I send payload with GET call using JAX-RS client? [duplicate]如何使用 JAX-RS 客户端通过 GET 调用发送有效负载? [复制]
【发布时间】:2017-08-02 16:46:47
【问题描述】:

我知道 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

【问题讨论】:

  • GET 调用不能有正文。
  • GET 请求不能有负载。
  • 你需要做一个 POST
  • 我无法更改 GET 调用。别人写的,我只能消费。
  • @AravindR 你有没有读过我的问题。我没有在这里开发休息电话。我正在接听电话。请不要只评论分数。

标签: java rest jax-rs jersey-2.0


【解决方案1】:

我没有在这里开发休息电话

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

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

在 GET 请求中发送正文的正确性实际上是本问答中已经讨论的另一个主题:HTTP GET with request body

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2014-07-11
    • 1970-01-01
    • 2017-04-22
    • 2015-01-03
    • 1970-01-01
    • 1970-01-01
    • 2015-04-26
    相关资源
    最近更新 更多