fix(bug): ParamUtil 修复数组越界问题

原代码当 kv.length == 0 时访问 kv[0] 会抛出异常。
改为跳过空参数,使用 split(=, 2) 限制分割次数。
This commit is contained in:
yukaidi
2026-05-29 00:32:56 +08:00
parent 6c60b0116f
commit 85fe910f25

View File

@@ -36,16 +36,20 @@ public final class ParamUtil {
public static MultiMap paramsToMap(String paramString) { public static MultiMap paramsToMap(String paramString) {
MultiMap entries = MultiMap.caseInsensitiveMultiMap(); MultiMap entries = MultiMap.caseInsensitiveMultiMap();
if (paramString == null) return entries; if (paramString == null || paramString.isEmpty()) return entries;
String[] params = paramString.split("&"); String[] params = paramString.split("&");
if (params.length == 0) return entries; if (params.length == 0) return entries;
for (String param : params) { for (String param : params) {
String[] kv = param.split("="); if (param == null || param.isEmpty()) {
continue;
}
String[] kv = param.split("=", 2);
if (kv.length == 2) { if (kv.length == 2) {
entries.set(kv[0], kv[1]); entries.set(kv[0], kv[1]);
} else { } else if (kv.length == 1) {
entries.set(kv[0], ""); entries.set(kv[0], "");
} }
// kv.length == 0 时(空字符串),跳过
} }
return entries; return entries;
} }