2014-04-10 45 views
0

我使用Jersey/java創建一個運行在tomca7上的web服務。 當我在@PathParam中傳遞一個URL作爲參數時,它不會顯示任何內容,但是當它是一個普通字符串時,它可以正常工作。 下面是我在做什麼修改演示..Tomcat不讀鏈接作爲參數

例如,如果我把:

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

「當我在@PathParam中傳遞URL作爲參數時」你是什麼意思? –

+0

我的意思是在瀏覽器URL中,如果我編寫PATH/broaders /字符串,它會顯示字符串,但是當我用「/」或「%2F」鍵入鏈接時,它不顯示任何內容! – callback

+0

請修改您的問題,以包含可以工作但不起作用的示例網址。 –

回答

0

A @PathParam默認不包括/

嘗試@PathParam的正則表達式。

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

不幸的是,沒有改變任何東西。我在Path和PathParam上嘗試了兩種方法,但沒有機會。 – callback

1

也許你應該通過url作爲參數。現在,使用allow_encoded_slash您會生成不是代理/ XXXX但是代理/ XXX/YYY/ZZZ的網址,因此它們與您的正則表達式不匹配。

+0

在PathParam中傳遞的變量K是URL! – callback

+0

這就是問題所在。一個PathParam是嵌入到uri請求中的東西,Param是你爲了生成最終url而「添加」到uri請求的東西。 我的意思是: http://www.blabla.com/xxx/parameter1它不一樣 http://www.blabla.com/xxx?parameter1=yyy 如果您需要發送url值,將它作爲參數發送,而不是作爲參數或您的請求 – JavierV

+0

您的意思是喜歡使用掃描儀來讀取URL嗎?這真的是我不想做的事情。我需要該網址才能成爲最終到達網址的一部分.. – callback