Для отправки поиска в Java необходимо использовать кодировку UTF-16 Url. Как я могу? - PullRequest
3 голосов
/ 07 сентября 2011

У определенного сайта (который не находится под моим контролем) есть внутренняя поисковая система, которая использует запросы GET, которые выглядят так: something.com/search?query=%u0001%0101, которые я хотел бы использовать в своем коде Java.

Насколько я понимаю, это не очень распространенный способ (UTF-16) для кодирования Url. Я попытался использовать HttpURLConnection с URL указанного выше типа, но это выдает мне java.net.URISyntaxException Malformed escape pair at index X (X - позиция% u0001).

Что я могу сделать? Я довольно новичок в решении этих проблем с кодировкой URL, поэтому любые советы будут высоко оценены.

Ответы [ 2 ]

1 голос
/ 07 сентября 2011

Форма something.com/search?query=%u0001%0101 нарушает спецификацию URI, поскольку процентные символы зарезервированы для процентного кодирования . Согласно этому правилу символ процента должен сопровождаться двумя шестнадцатеричными цифрами. Это недопустимый URI в кодировке UTF-16.

Не удивительно, что на этих адресах появляются ошибки.

Возможно, вам придется открыть сокет и отправить собственный искаженный запрос клиента .

GET /search?query=%u0001%0101 HTTP/1.1
Host: something.com
0 голосов
/ 07 сентября 2011

Вы можете использовать java.net.URLEncoder.encode("you string", "UTF-16");

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...