2012-02-20 63 views
1

我有這樣的代碼:HttpURLConnection類和編碼的字符

URL url = new URL("http://foo.com/?param=paj%E9"); 
HttpURLConnection connection = (HttpURLConnection) url.openConnection(); 
... 

但是,它似乎像的openConnection被supressing URL的「%E9」的一部分,該服務器結束接收請求http://foo.com?param=paj

我忘了應用任何不同的設置來正常工作嗎?

謝謝!

編輯:URL「http://foo.com/?param=paj%E9」已經編碼(從http://foo.com/?param =pajé),這應該是服務器應該收到的請求。如果我試圖直接從瀏覽器訪問http://foo.com/?param=paj%E9,它會按預期工作。如果我的URLEncode「paj%E9」,我將對參數進行雙重編碼,服務器在解碼值時會看到「paj%E9」而不是「pajé」。 我實際上正在嘗試構建代理,因此我收到已編碼的網址。問題是,無論何時我使用HttpURLConnection傳遞要請求的編碼參數,它都會忽略編碼部分(如%E9)。

+1

你需要URL編碼的請求參數。 – Zaki 2012-02-20 15:02:57

回答

-1

您需要使用java.net.URI類來編碼您的URL,而不是自行處理它。赤這樣的: HTTP URL Address Encoding in Java

+0

請參閱我的編輯。 – 2012-02-20 15:44:50

-1

您可以使用下面的代碼 URLEncoder.encode( 「中文」, 「UTF-8」)