/** * Parses application/x-www-form-urlencoded data into a map of parameters. * * @param formContent raw form content data (body) * @return map of decoded parameters */ private static Map<String, List<String>> parseFormParameters(final String formContent) { if (formContent.isEmpty()) { return Collections.emptyMap(); } final Map<String, List<String>> parameterMap = new HashMap<>(); final String[] params = formContent.split("&"); for (final String param : params) { final String[] parts = param.split("="); final String paramName = urlDecode(parts[0]); final String paramValue = parts.length > 1 ? urlDecode(parts[1]) : ""; List<String> currentValues = parameterMap.get(paramName); if (currentValues == null) { currentValues = new LinkedList<>(); parameterMap.put(paramName, currentValues); } currentValues.add(paramValue); } return parameterMap; }