我们正在寻找一种标准方法,在给定预定义基本URL和参数和值的Map的情况下对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"
不过,我们正在使用Apache Click with Tomcat。
答案 0 :(得分:2)
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 :(得分:1)
您可以使用URLCodec中的Commons Codec来创建参数的网址编码版本,然后循环参数以创建查询。请查看the source of URLEncodedUtils class in Apache HttpClient以查看我解释的示例。