我正在尝试使用Jersey提供的InMemory容器为泽西资源编写一个测试用例。
由于我的服务方法包含许多多值参数作为过滤器,因此我选择将所有这些值作为单个JSON参数发送,这样就可以轻松地为每个过滤器发送值列表。
当我使用target("path").queryParam("filters", jsonString).request().get();
发送JSON字符串时,调用将失败到Jersey客户端内部查询构建器,该构建器正在解析URL并检查URL中的路径参数模板。由于网址包含我的JSON" {"在其中,它们被解释为路径参数。
如果我尝试使用URLEncode.encode(jsonStr, "UTF-8")
对JSON进行编码,则会解决路径参数模板问题,但服务器会收到JSON中的空格作为" +"作为泽西客户端编码URL一次,但服务器只解码一次。
如果我将Queryparam作为post param测试工作,但我不想使用POST来检索数据。
由于公司政策,我无法发布原始代码。
我的问题是,有没有办法通过设置自定义构建器来禁用在球衣clieny中的路径模板检查。