Java Tomcat不将链接读取为参数

Java Tomcat不将链接读取为参数,java,tomcat,jersey,tomcat7,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%2Fvoc

我正在使用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 to Catalina.properties,但没有运气。

A
@PathParam
默认情况下不包括
/

请为
@PathParam
尝试正则表达式

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

也许您应该将url作为参数传递。现在,使用allow_encoded_斜杠,您生成的URL不是broaders/XXXX,而是broaders/XXX/YYY/ZZZ,因此它们与您的regexp不匹配。

“当我将URL作为@PathParam中的参数传递时”这是什么意思?我的意思是,在浏览器URL中,如果我写入PATH/broaders/string,它会显示字符串,但当我键入带有“/”或“/”的链接时%2F“它没有显示任何内容!请编辑你的问题,包括工作和不工作的示例URL。我做到了!ThanksCriosity:如果使用/broaders/http会发生什么?或/加宽器/测试%3A2F2F?很遗憾,这并没有改变任何事情。我在Path和PathParam上都试过了,但没有机会。我在PathParam中传递的变量K就是URL!这就是问题所在。PathParam是嵌入到uri请求中的东西,而Param是为了生成最终url而“添加”到uri请求中的东西。我的意思是:这与如果你需要发送url值不同,发送它作为一个参数,而不是作为你的请求的一部分。你的意思是像使用扫描仪读取url一样吗?这才是我真正不想做的。我需要该URL成为最终URL的一部分..将URL作为pathparam传递,您正在更改请求的URL,但您不希望这样。您需要保持url静态,只需发送一个值,该值将在您选择处理方法后进行处理。已编辑:在方法中使用“@RequestParam(“url”)字符串url”而不是PathParam,并且在执行http请求时,正确创建url,如localhost/app/../broaders/?url=your_值在java类中,使用以下代码:String getbrower(@RequestParam(“url”)字符串url){return k;},在浏览器中,键入以下url:localhost/app/../broaders/test?url=http%3A%2F%2ftema%3D254