使用 WebTarget 时指定原始查询字符串

Specify raw query string when using WebTarget

我正在处理一个现有的大型项目,该项目利用 javax.ws.rs.client.WebTarget 与 RESTful API 对话。 API 是由第三方开发的,我无法控制它。我需要按照以下格式提出请求:

https://end.point.url/endpoint/id?data

不幸的是,我不知道如何使用 WebTarget 指定此类请求。我尝试使用 path("endpoint/id?data"),但它被转换为 endpoint/id%3Fdata,我得到了 404。我尝试使用 queryParam 指定空值,这让我 endpoint/id?data= - 这导致错误 必需参数 data 缺失 .

还有什么其他选择?用其他东西替换 WebTarget 是不可行的,因为它遍布整个大型项目。

第一,相关问题:Url encoding issue with Jersey Client

经过大量研究,似乎唯一的方法是在创建 WebTarget 时指定整个 uri,如下所示:

Client client = ClientBuilder.newClient().register(authFeature);
WebTarget webTarget = client.target("https://end.point.url/endpoint/id?data")