2015-06-02 17 views
0

我知道有幾十個類似的主題,但我沒有發現smth有用回答我的問題。正確的網址編碼在jvm語言

假設我有一個網址使用Apache UriUril.encodeQueryhttp://example.com/a/b?param1=1&param2={"a": "b"}&param3="&=+%"

+=跡象沒有得到編碼。當使用URLEncoder.encode他們確實得到編碼,但在這種情況下,我必須單獨編碼每個參數值(所以我需要得到一個參數和它們的值的地圖)。正如你所看到的,在這種情況下簡單地拆分&=的url字符串不起作用。

那麼如何以較少的努力克服這個任務呢?

回答

0

我已經找到解決我的問題的方法,準備適當的正則表達式來解析參數及其值。也許這個解決方案並不是那麼優雅,但它解決了我的問題。 所以,假設{}被封閉,可能conatin任何符號內""也是這樣的符號(除了它們不能包含自身內部)的正則表達式看起來像符號: ((\w+)=(\{.*?\}(?=&)|\{.*\}|".*"|\w+))&{0,1}

輸入這樣的正則表達式必須查詢字符串的網址。在每個第2組中將會有參數名稱,並且在每個第3組中 - 參數值

1

通過使用URI templates

使用URI模板你所擁有的稱爲關聯數組。

在Java中存在實現;其中之一是mine(抱歉的自我廣告)。

+0

當您知道什麼是參數名稱和什麼是參數值時很好。但是當這個字符串是由用戶生成它變得更加複雜 – maks

+0

對不起,我不明白你的意思;你能更精確嗎? – fge

+0

用戶將url字符串傳遞給應用程序,任務是正確解析參數,因爲它們可以包含任何符號 – maks