HttpURLConnection и закодированные символы в URL - PullRequest
2 голосов
/ 20 февраля 2012

У меня есть такой код:

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

Однако, похоже, что openConnection подавляет часть 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é "при декодировании значения. Я на самом деле пытаюсь создать прокси, и поэтому я получаю URL-адреса, уже закодированныеПроблема в том, что всякий раз, когда я передаю такой закодированный параметр для запроса с использованием HttpURLConnection, он просто игнорирует закодированную часть (например,% E9).

Ответы [ 2 ]

0 голосов
/ 17 февраля 2014

Вы можете использовать следующий код URLEncoder.encode ("中文", "utf-8")

0 голосов
/ 20 февраля 2012

Вам нужно использовать класс java.net.URI для кодирования вашего URL, а не обрабатывать его самостоятельно.Проверьте это: HTTP URL-адрес кодирования в Java

...