如何使用URLEncodedUtils.parse解析包含特殊符号的URL?

时间:2015-12-07 12:31:10

标签: java

我的代码是这样的:

String queryString = "";
String url = "http://localhost:8080/xyz.html?param1=paramx&param2=wt_jnknk|nkn|lk_nm&param3=abc";
try {
List<NameValuePair> params = URLEncodedUtils.parse(new URI(url), "UTF-8");
for (NameValuePair param : params) {
    if(!param.getName().toLowerCase().equals("param3")){
          queryString = queryString + "&" + param.getName() + "=" + param.getValue();
    }
}
} catch (URISyntaxException e) {
      return "error";
}
return queryString;

此代码不返回queryString并返回错误,因为param2包含&#34; |&#34;。我怎么处理这个?我也可以在url中有其他特殊字符。

感谢。

1 个答案:

答案 0 :(得分:0)

首先使用URLEncoder获取有效字符串。

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

这将导致

  

的http%3A%2F%2Flocalhost%3A8080%2Fxyz.html%3Fparam1%3Dparamx%26param2%3Dwt_jnknk%7Cn​​kn%7Clk_nm%26param3%3Dabc

基本上它会将|更改为%7。你应该能够解析