2012-08-26 131 views
0

我正在寫一些類似於圖像代理的地方,我從我的網站前端接收URL,然後下載圖像,重新調整大小,並返回較小的圖像以供前端和客戶端使用從「代理」下載。 這意味着我需要的所有種類的URL模式照顧,這就是爲什麼我選擇來解碼給定的URL,也比使用URIUtils.decode對其進行編碼:如何避免遞歸url解碼

private String fixUrl(String fromUrl) throws URIException { 
    fromUrl = URIUtil.decode(fromUrl); 
    fromUrl = URIUtil.encodeQuery(fromUrl); 
    return fromUrl; 
} 

這應該幫我照顧網址已經編碼。 我的問題是,一些網址是雙重編碼,並從我看到,URIUtils.decode,執行遞歸解碼,這意味着在雙編碼的網址的情況下,我會得到一個不正常的網址,無法正常工作。

有沒有簡單的方法來解碼只有一次?

+0

所以這是關於Apache HTTP組件,正確嗎? – home

回答

0

我試圖檢查該URL是否仍然包含字符%。如果它不包含任何%它不會被編碼,您可以停止解碼過程。

+0

對於空格編碼爲「+」的「不太正式」編碼呢?我認爲你需要檢查%_或_ +。 (取決於你是否嚴格編碼) – user949300