首页 > 解决方案 > 使用 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=- 这导致错误required parameter datamissing

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

标签: javaapigroovyjavax.ws.rs

解决方案


一、相关问题:Jersey Client 的 Url encoding issue

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

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

推荐阅读