Стандартный способ кодирования URL с использованием базового URL и карты <String, String> с параметрами - PullRequest
2 голосов
/ 13 декабря 2010

мы ищем стандартный способ кодирования URL с заданным базовым URL и картой параметров и значений.В идеале метод должен быть объявлен как что-то вроде

String constructURL( String baseURL, Map<String,String> parameters)

будет работать как следующий фрагмент

Map<String, String> params = new HashMap<String,String>();
params.put("p1", "v1");
params.put("p2", "v2");
String url = constructURL( "page.html", params);

, а URL будет иметь следующее значение

"page.html?p1=v1&p2=v2"

Btw,мы используем Apache Click с Tomcat.

Ответы [ 2 ]

2 голосов
/ 13 декабря 2010

JDK URLEncoder должно работать для вашего варианта использования. Как это:

String constructURL(String base, Map<String, String> params) {
  StringBuilder url = new StringBuilder(base);
  if(params != null && params.size() > 0) {
  url.append("?");
  for(Map.Entry<String, String> entry : params.entrySet()) {
      url.append(entry.getKey());
      url.append("=");
      url.append(URLEncoder.encode(entry.getValue()));
      url.append("&");   //not for the last one (but should be OK)
    }
  }

return url.toString();
}
1 голос
/ 13 декабря 2010

Вы можете использовать URLCodec из Commons Codec , чтобы создать версию ваших параметров в кодировке URL, а затем зациклить параметры для создания запроса. Взгляните на источник класса URLEncodedUtils в Apache HttpClient , чтобы увидеть пример того, что я объясняю.

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