Кодирование значений параметров в URL с помощью Java - PullRequest
5 голосов
/ 21 сентября 2011

Мне нужно закодировать значения параметров в URL.Если я использую следующее:

URLEncoder.encode(url, "UTF-8");

для URL, подобного этому: http://localhost:8080/...

, он будет кодировать «: //» и т. Д. Мне нужно только кодирование для значенийпараметры начинаются со всей строки URL.Так что в этом случае:

http://localhost/?q=blah&d=blah

Я хочу закодировать только "бла" в значениях 2 параметров (для n параметров, конечно).

Как вам лучшеКстати?

Спасибо

Рандомизировать

Ответы [ 2 ]

5 голосов
/ 21 сентября 2011

Вы используете URLEncoder неправильно. Вы должны кодировать каждое значение параметра отдельно, а затем собирать URL вместе.

Например


String url = "http://localhost/?q=" + URLEncoder.encode ("blah", "UTF-8") + "&d=" + URLEncoder.encode ("blah", "UTF-8");
2 голосов
/ 21 сентября 2011

Для URL, подобного http://localhost/hello/sample?param=bla,, вы можете использовать это (из класса Java java.net.URI):

URI uri = new URI("http", "localhost", "/hello/sample", "param=bla", null);
String url = uri.toASCIIString();
...