From 67f86131fbc2c73f931d9a47fe70f31fea379618 Mon Sep 17 00:00:00 2001 From: aoshiguchen <1052045476@qq.com> Date: Tue, 26 Jul 2022 18:26:16 +0800 Subject: [PATCH] =?UTF-8?q?@RequestParam=E6=94=AF=E6=8C=81application/x-ww?= =?UTF-8?q?w-form-urlencoded=E4=B8=8B=E5=8F=82=E6=95=B0=E8=87=AA=E5=8A=A8?= =?UTF-8?q?=E8=A3=85=E9=85=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../core/web/param/HttpRequestParser.java | 48 ++++++++++++------- .../core/web/test1/TestController.java | 5 ++ 2 files changed, 37 insertions(+), 16 deletions(-) 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); + } }