Java 对URL上的GET参数进行编码

Java 对URL上的GET参数进行编码,java,http,url,get,encode,Java,Http,Url,Get,Encode,我编写的代码运行良好,但我确信它存在最干净、更容易阅读的东西 public static String get(String url, HashMap<String, Object> args){ if(!url.endsWith("/")) url+="/"; args.keySet().forEach(k -> { try { args.replace(k, URLEncoder

我编写的代码运行良好,但我确信它存在最干净、更容易阅读的东西

    public static String get(String url, HashMap<String, Object> args){
        if(!url.endsWith("/")) url+="/";
        args.keySet().forEach(k -> {
            try {
                args.replace(k, URLEncoder.encode(args.get(k).toString(), "UTF-8"));
            }catch (Exception ex){}
        });
        if(!args.isEmpty()){
            url+="?";
            for(Map.Entry<String, Object> arg : args.entrySet()){
                url+=arg.getKey()+"="+arg.getValue()+"&";
            }
            url = url.substring(0, url.length()-1);
        }
        return url;
    }
publicstaticstringget(字符串url,HashMap参数){
如果(!url.endsWith(“/”)url+=“/”;
args.keySet().forEach(k->{
试一试{
args.replace(k,URLEncoder.encode(args.get(k).toString(),“UTF-8”);
}捕获(例外情况除外){}
});
如果(!args.isEmpty()){
url+=“?”;
对于(Map.Entry arg:args.entrySet()){
url+=arg.getKey()+“=”+arg.getValue()+“&”;
}
url=url.substring(0,url.length()-1);
}
返回url;
}
您可以使用JAX-RS:

publicstaticstringget(字符串url、映射参数){
UriBuilder=UriBuilder.fromUri(url);
args.entrySet().forEach(e->builder.queryParam(e.getKey(),e.getValue());
返回builder.toString();
}
或者,您可能想看看Apache。首先,不要试图重新发明轮子。在一个非常常见的需求中创建一个带有查询参数的URI,因此我强烈建议您使用经过测试和信任的解决方案,而不是编写自己的解决方案

让我来扩展一下发帖人。根据应用程序中使用的堆栈,可以采用以下方法之一:

来自JAX-RS(在JavaEE6中引入)
publicstaticstringbuilduri(stringbaseuri,Map queryParams){
UriBuilder=UriBuilder.fromUri(baseUri);
forEach((key,value)->builder.queryParam(key,value.toString());
返回builder.toString();
}
从春天开始
publicstaticstringbuilduri(stringbaseuri,Map queryParams){
UriComponentsBuilder=UriComponentsBuilder.fromURI字符串(baseUri);
forEach((key,value)->builder.queryParam(key,value.toString());
返回builder.toUriString();
}
来自ApacheHTTP组件
publicstaticstringbuilduri(stringbaseuri,Map queryParams)
抛出URISyntaxException{
URIBuilder=新的URIBuilder(baseUri);
queryParams.forEach((key,value)->builder.addParameter(key,value.toString());
返回builder.toString();
}
public static String get(String url, Map<String, Object> args) {
    UriBuilder builder = UriBuilder.fromUri(url);
    args.entrySet().forEach(e -> builder.queryParam(e.getKey(), e.getValue()));
    return builder.toString();
}