java - 在 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;
}
解决方案
您可以使用 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。
推荐阅读
- android - 记住我的 SharedPreferences 在 android 中运行缓慢。如何让它更快地工作?
- vaadin - Vaadin 21:将 Scroller 嵌套到 VerticalLayout 问题中
- javascript - 如何在商店中为 React Native App 编辑我的 Firebase 规则,以便发送数据而无需经过身份验证?
- flutter - 滚动后显示应用栏 - Flutter
- c# - 使用 OfficeOpenXml 格式将图像从 C# 代码插入 docx 文件
- flutter - 没有 Future.delayed 的代码不会在 catch 上执行
- amazon-web-services - 如何在golang中使用flutter发送的文本和照片数组数据
- java - 由于 Java 11 中的 JSON 加载,Young 垃圾收集长时间暂停
- flutter - 如何使用可注入的泛型类型参数注册一个类?
- powerbi - 坚持在模型中创建连接 - Power BI