Tomcat不读取链接作为参数

时间:2014-04-10 10:16:08

标签: java tomcat jersey tomcat7

我使用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但没有运气。

2 个答案:

答案 0 :(得分:1)

也许你应该将url作为参数传递。现在,使用allow_encoded_slash,您生成的网址不是broaders / XXXX,而是broaders / XXX / YYY / ZZZ,因此它们与正则表达式不匹配。

答案 1 :(得分:0)

默认情况下,@PathParam不包含/

尝试使用@PathParam的正则表达式。

@Path("broaders/{k:.+}")