【发布时间】:2015-03-23 18:20:49
【问题描述】:
我正在尝试使用 Jersey 提供的 InMemory 容器为 jersey 资源编写测试用例。
由于我的服务方法包含许多多值参数作为过滤器,我选择将所有这些值作为单个 JSON 参数发送,以便为每个过滤器发送值列表。
当我使用target("path").queryParam("filters", jsonString).request().get(); 发送 JSON 字符串时,Jersey 客户端内部查询生成器调用失败,该生成器正在解析 url 并检查 url 中的路径参数模板。由于 url 包含我的带有“{”的 JSON,它们被解释为路径参数。
如果我尝试使用URLEncode.encode(jsonStr, "UTF-8") 对 JSON 进行编码,则路径参数模板问题得到解决,但 JSON 中的空格被服务器接收为“+”作为球衣客户端编码 URL 一次,但服务器仅解码一次。
如果我将 Queryparam 作为 post param 测试工作,但我不想使用 POST 来检索数据。
由于公司政策,我无法发布原始代码。
我的问题是,有没有办法通过设置自定义生成器来禁用 jersey clieny 中的路径模板检查。
【问题讨论】:
标签: unit-testing jersey jax-rs jersey-2.0 jersey-client