我嘗試使用 Jersey 或 Resteasy 中的任何一個(gè)發(fā)送帶有一些 URL 字符串作為參數(shù)的 GET 請求Response response = new ResteasyClientBuilder() .build() .target(UriBuilder.fromPath("https://foo.bar")) .queryParam("url", "http://hostname.com/The%20URL%20with spaces.jpg") .request() .get();兩種實(shí)現(xiàn)都發(fā)送https://foo.bar?url=http%3A%2F%2Fhostname.com%2FThe%20URL%20with%20spaces.jpg我假設(shè)原始空間被轉(zhuǎn)義,%20而原始空間%20在查詢參數(shù)中被雙重轉(zhuǎn)義。但事實(shí)并非如此。原始空間和%20混合,在服務(wù)器端,我得到未轉(zhuǎn)義的字符串,所有字符串都%20轉(zhuǎn)換為空格,并且字符串被破壞。根據(jù)Resteasy 的源代碼,它“保持編碼值“%...”和模板參數(shù)完整”。但是我在 JEE 文檔中沒有找到任何關(guān)于這種行為的詞。我應(yīng)該在將字符串添加為參數(shù)之前對其進(jìn)行轉(zhuǎn)義嗎?我應(yīng)該使用什么轉(zhuǎn)義器來確保它轉(zhuǎn)義所有"%..." and template parameters,并且它在參數(shù)中轉(zhuǎn)義的所有內(nèi)容都被服務(wù)器成功轉(zhuǎn)義?
添加回答
舉報(bào)
0/150
提交
取消