You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Quarkus @RegisterRestClient中发送带请求体的GET请求?

解决RESTEasy客户端发送带请求体的GET请求报错问题

RESTEasy默认会拦截带请求体的GET请求,抛出你遇到的RESTEASY004565: A GET request cannot have a body异常。针对无法修改的远程服务,可通过以下两种方案解决:

方案1:通过配置属性禁用GET请求体校验

RESTEasy提供了专属配置属性关闭这个检查,针对你当前使用的Jakarta EE版本(jakarta.ws.rs包),只需启用resteasy.allow_get_method_with_body属性:

配置方式1:通过ClientBuilder代码设置

Client client = ClientBuilder.newBuilder()
        .property("resteasy.allow_get_method_with_body", true)
        .build();

配置方式2:通过配置文件(如Spring Boot的application.properties)

如果是Spring Boot环境,直接在配置文件中添加:

resteasy.allow_get_method_with_body=true

方案2:手动构建GET请求(配置失效时备用)

如果上述配置未生效,可以绕过注解方式,手动构建GET请求并写入请求体:

Client client = ClientBuilder.newClient();
WebTarget target = client.target("http://your-remote-service/SomeRemoteEndpoint");

// 初始化请求体DTO
SomeDto someDto = new SomeDto();
// 填充DTO数据

// 构建请求并设置Header
Invocation.Builder requestBuilder = target.request()
        .header("Authorization", "your-auth-token");

// 手动发送带请求体的GET请求
Response response = requestBuilder.method("GET", Entity.json(someDto));

注意事项

  • 该配置仅绕过RESTEasy客户端的校验,需确保远程服务确实支持接收带请求体的GET请求,部分服务端框架可能仍会拒绝此类请求
  • HTTP规范中GET请求带请求体的行为属于未定义范畴,不建议在自有服务中采用这种设计

内容的提问来源于stack exchange,提问作者dsestini

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 09:39:52