首页 > 解决方案 > 在 URL 上编码 GET 参数

问题描述

我编写的代码运行良好,但我确信存在一些最干净且更易于阅读的东西

    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;
    }

标签: javahttpurlgetencode

解决方案


您可以使用 JAX-RS 的UriBuilder

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();
}

或者,您可能想看看Apache 的URIBuilder


推荐阅读