【发布时间】:2017-01-20 14:30:35
【问题描述】:
尝试使用 JAX-RS @PathParam 允许正斜杠。发生的情况是它获取值的后端,而不是整个值。下面的例子
方法代码
@PUT
@POST
@Path("/temp/{keyValue:.+}")
@Produces({MediaType.APPLICATION_JSON, MediaType.APPLICATION_XML})
public void setValues(@PathParam("keyValue") PathSegment myvalue) {
for (String key : myvalue.getMatrixParameters().keySet()) {
System.out.println(batch)
}
测试网址
https://localhost:8443/*path*/temp/keyValue;key1=THIS/SUCKS
结果
batch = SUCKS
期望的结果
batch = key1=THIS/SUCKS
我已尝试更改方法签名中的正则表达式,但无法完成。如果事情是 url 编码的,我可以通过%2F 让它通过。但是,如果我将我的 Apache httpd 更改为 AllowEncodedSlashes On,它会破坏我网站的其余部分。关于它可能是什么的任何想法?
我正在运行 httpd -> tomcat -> restService (JAX-RS)
【问题讨论】:
-
您的参数必须进行 URL 编码。
-
我试过了,但需要切换 httpd 以允许编码。那会破坏我网站的其他部分。