我使用Jersey / java创建一个在tomca7上运行的Web服务。 当我在@PathParam中传递一个URL作为参数时,它不会显示任何内容,但是当它是常规字符串时,它可以正常工作。 这是我正在做的修改演示..
例如,如果我把:
localhost/app/.../broaders/test
它会显示:test
但如果我说:
localhost/app/.../broaders/http%3A%2F%2Ftematres.befdata.biow.uni-leipzig.de%2Fvocab%2F%3Ftema%3D254
甚至只是
localhost/app/..../broaders/http%3A2F2F
它不会显示任何内容。
@GET
@Path("broaders/{k}")
@produces(MediaType.APPLICATION_JSON)
@public String getBroader(@PathParam("k") String k){
return k;
}
我将-Dorg.apache.tomcat.util.buf.UDecoder.ALLOW_ENCODED_SLASH = true添加到Catalina.proprieties但没有运气。
答案 0 :(得分:1)
也许你应该将url作为参数传递。现在,使用allow_encoded_slash,您生成的网址不是broaders / XXXX,而是broaders / XXX / YYY / ZZZ,因此它们与正则表达式不匹配。
答案 1 :(得分:0)
默认情况下,@PathParam
不包含/
。
尝试使用@PathParam
的正则表达式。
@Path("broaders/{k:.+}")