我如何使用JAX-RS客户端发送GET请求并附带有效负载?

18 浏览
0 Comments

我如何使用JAX-RS客户端发送GET请求并附带有效负载?

这个问题已有答案:

HTTP GET带请求体

我知道GET请求不应该有请求体,但这个调用是由其他人开发的,现在我无法更改它。我想要调用一个GET方法并传递负载(JSON请求体)的API。我可以传递路径参数调用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

admin 更改状态以发布 2023年5月24日
0
0 Comments

我这里并不是在开发一个rest调用

实际上,你正在开发一个rest调用,因为javax.ws.rs是Java中RESTful web服务的基本包,而javax.ws.rs.client.Client是RESTful web服务客户端的基本接口:客户端API概述

也就是说,您可能需要构建自己的客户端,以允许您在GET请求中发送有效负载,或者找到一个已存在的具有此功能的web服务客户端。

在GET请求中发送主体的正确性其实是一个不同的主题,已经在这个问答中讨论过:HTTP GET with request body

0