2010-04-12 5 views
2

У меня есть метод GET, который выглядит следующим образом:Как правильно кодировать «[» и «]» в запросах с помощью Apache HttpClient?

GetMethod method = new GetMethod("http://host/path/?key=[\"item\",\"item\"]"); 

Такой путь работает нормально, когда набирается непосредственно в браузере, но выше линии при запуске вызывает IllegalArgumentException: Invalid URI.

Я рассмотрел использование класса URIUtils, но безуспешно. Есть ли способ автоматически кодировать это (или добавить строку запроса на URL-адрес, не вызывая HttpClient barf?).

ответ

2

Указанный URIUtils класс имеет метод encodeAll(str) - так:

new GetMethod("http://host/path/?key=" 
     + URIUtil.encodeAll("[\"item\",\"item\"]")); 
+0

Это приводит к другому за исключением: Исключение в потоке "основной" java.lang.IllegalArgumentException: параметр хозяина null –

+0

@ Джейсон Николс - см. мое обновление. Вы должны кодировать только параметр, а не весь uri. – Bozho

+0

Знаете, клянусь, я попробовал это на ранней стадии, и это не сработало =) Естественно, он работает сейчас =) Спасибо! –

2

Вы также можете использовать java.net.URLEncoder:

String myURL = "http://host/path/?" + 
    URLEncoder.encode("key=[\"item\",\"item\"]", UTF-8); 
+0

И согласно [этому сообщению] (http://www.mail-archive.com/[email protected]/msg02680.html), как это должно быть сделано в HttpClient 4. – Paul

 Смежные вопросы

  • Нет связанных вопросов^_^