diff --git a/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/param/HttpRequestParser.java b/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/param/HttpRequestParser.java index 7ae1fdc1..26fd8a67 100644 --- a/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/param/HttpRequestParser.java +++ b/neutrino-core/src/main/java/fun/asgc/neutrino/core/web/param/HttpRequestParser.java @@ -75,22 +75,9 @@ public class HttpRequestParser { () -> null == queryParamMap, this, () -> { - queryParamMap = new HashMap<>(); - if (StringUtil.isEmpty(queryString)) { - return; - } - String[] params = queryString.split("&"); - for (String param : params) { - int index2 = param.indexOf("="); - String key = ""; - String val = ""; - if (index2 > 0) { - key = param.substring(0, index2); - if (index2 < param.length() - 1) { - val = param.substring(index2 + 1); - } - queryParamMap.put(key, val); - } + queryParamMap = queryStringToMap(queryString); + if ("application/x-www-form-urlencoded".equals(getContentType())) { + queryParamMap.putAll(queryStringToMap(getContentAsString())); } }, () -> queryParamMap @@ -154,4 +141,33 @@ public class HttpRequestParser { } return null; } + + public String getHeaderValue(String name) { + return request.headers().get(name); + } + + public String getContentType() { + return request.headers().get("Content-Type"); + } + + private Map queryStringToMap(String queryString) { + Map result = new HashMap<>(); + if (StringUtil.isEmpty(queryString)) { + return result; + } + String[] params = queryString.split("&"); + for (String param : params) { + int index2 = param.indexOf("="); + String key = ""; + String val = ""; + if (index2 > 0) { + key = param.substring(0, index2); + if (index2 < param.length() - 1) { + val = param.substring(index2 + 1); + } + result.put(key, val); + } + } + return result; + } } diff --git a/neutrino-core/src/test/java/fun/asgc/neutrino/core/web/test1/TestController.java b/neutrino-core/src/test/java/fun/asgc/neutrino/core/web/test1/TestController.java index cf3fd1e9..0290c962 100644 --- a/neutrino-core/src/test/java/fun/asgc/neutrino/core/web/test1/TestController.java +++ b/neutrino-core/src/test/java/fun/asgc/neutrino/core/web/test1/TestController.java @@ -63,4 +63,9 @@ public class TestController { fullHttpResponse.headers().add(HttpHeaderNames.CONTENT_TYPE, HttpHeaderValues.APPLICATION_JSON); context.writeAndFlush(fullHttpResponse).addListener(ChannelFutureListener.CLOSE); } + + @GetMapping("hello3") + public void hello3(@RequestParam("a") String a, @RequestParam("b") String b, @RequestParam(value = "c", required = false) String c) { + log.info("a:{} b:{} c:{}", a, b, c); + } }