java - 使用 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 data
missing。
还有什么其他选择?用其他东西替换 WebTarget 是不可行的,因为它遍布整个大型项目。
解决方案
一、相关问题:Jersey Client 的 Url encoding issue
经过相当多的研究,似乎唯一的方法是在创建 WebTarget 时指定整个 uri,如下所示:
Client client = ClientBuilder.newClient().register(authFeature);
WebTarget webTarget = client.target("https://end.point.url/endpoint/id?data")
推荐阅读
- hyperledger-fabric - 超级账本结构交易
- html - 角。使孩子 100% 宽度的 flex 父母
- html - 如何使此网页适合任何屏幕尺寸或不同尺寸?
- javascript - 检测触摸与点击事件的更好方法
- data-structures - 如何设计具有 push() 和 popMin() 操作的数据结构,其中 push() 在 O(log(n)) 中,popMin 在恒定时间内,即 O(1)?
- php - Woocommerce 运费税和错误的总计算
- python - 如何用函数重新分配变量?
- django - 如何以 django 形式显示依赖下拉列表
- java - 使用发送网格发送电子邮件附件
- jupyter-notebook - 如何将文件存储在与 jupyter 不同的工作文件夹中