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

如何使用Spring WebClient在GET请求URL中传递JSON参数

问题原因

Spring WebClient的UriBuilder默认会将路径字符串中的{、}识别为URI模板占位符,尝试匹配后续传入的参数进行填充,所以直接拼接包含JSON结构的查询参数会触发模板解析逻辑,不符合需求。

解决方案

下面给出两种可行的实现方式,无需切换HTTP客户端:

方案1:直接构造URI对象,跳过模板解析

直接使用URI.create()构造完整的请求地址传入uri()方法,不会触发WebClient的URI模板解析逻辑:

import java.net.URI;

// 核心代码
WebClient.create("https://api.staging.xxxx.com/")
    .get()
    .uri(URI.create("locations?where={\"account\":\"bob\"}"))
    .retrieve()
    // 后续响应处理逻辑

注意Java字符串中的双引号需要转义,也可以提前将JSON序列化为字符串后拼接。

方案2:通过queryParam单独传递参数(更推荐)

使用UriBuilder的queryParam方法单独传递where参数的值,框架会自动处理特殊字符的URL编码,同时不会触发模板解析:

WebClient.create("https://api.staging.xxxx.com/")
    .get()
    .uri(uriBuilder -> uriBuilder.path("locations")
        .queryParam("where", "{\"account\":\"bob\"}")
        .build())
    .retrieve()
    // 后续响应处理逻辑

该方式不需要手动处理URL编码,也避免了特殊字符被识别为模板占位符的问题,兼容性更好。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.01 11:18:03