From 85fe910f2544debf7166e14d0a074f8b5ad6bf04 Mon Sep 17 00:00:00 2001 From: yukaidi Date: Fri, 29 May 2026 00:32:56 +0800 Subject: [PATCH] =?UTF-8?q?fix(bug):=20ParamUtil=20=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=E6=95=B0=E7=BB=84=E8=B6=8A=E7=95=8C=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 原代码当 kv.length == 0 时访问 kv[0] 会抛出异常。 改为跳过空参数,使用 split(=, 2) 限制分割次数。 --- core/src/main/java/cn/qaiu/vx/core/util/ParamUtil.java | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/core/src/main/java/cn/qaiu/vx/core/util/ParamUtil.java b/core/src/main/java/cn/qaiu/vx/core/util/ParamUtil.java index 0b218c0..b1ae974 100644 --- a/core/src/main/java/cn/qaiu/vx/core/util/ParamUtil.java +++ b/core/src/main/java/cn/qaiu/vx/core/util/ParamUtil.java @@ -36,16 +36,20 @@ public final class ParamUtil { public static MultiMap paramsToMap(String paramString) { MultiMap entries = MultiMap.caseInsensitiveMultiMap(); - if (paramString == null) return entries; + if (paramString == null || paramString.isEmpty()) return entries; String[] params = paramString.split("&"); if (params.length == 0) return entries; for (String param : params) { - String[] kv = param.split("="); + if (param == null || param.isEmpty()) { + continue; + } + String[] kv = param.split("=", 2); if (kv.length == 2) { entries.set(kv[0], kv[1]); - } else { + } else if (kv.length == 1) { entries.set(kv[0], ""); } + // kv.length == 0 时(空字符串),跳过 } return entries; }