Java 如何在SpringMVC控制器中获取HttpRequestGetEntity数据?
有人能告诉我这是从SpringMVC rest控制器中的“Request.setEntity”获取数据的正确方法,还是我遗漏了什么 其次,在邮递员“httpPost”请求中,我将参数(testKey和testValue)作为头或体传递Java 如何在SpringMVC控制器中获取HttpRequestGetEntity数据?,java,spring,web-services,spring-mvc,Java,Spring,Web Services,Spring Mvc,有人能告诉我这是从SpringMVC rest控制器中的“Request.setEntity”获取数据的正确方法,还是我遗漏了什么 其次,在邮递员“httpPost”请求中,我将参数(testKey和testValue)作为头或体传递 第三,在不知道httpPost请求中的参数的情况下,我能够解析传入请求并在Spring controller中从中提取参数吗?首先,最好知道发送的请求的内容类型 所以我猜你想得到请求的主体。要获取所有请求参数,如果事先不知道参数名称,可以使用@RequestPar
第三,在不知道httpPost请求中的参数的情况下,我能够解析传入请求并在Spring controller中从中提取参数吗?首先,最好知道发送的请求的内容类型 所以我猜你想得到请求的主体。要获取所有请求参数,如果事先不知道参数名称,可以使用
@RequestParam
和Map
类型来获取所有参数:
@RestController
public class TestController {
private static final Logger logger = Logger.getLogger(TestController.class);
@RequestMapping(value = "/getRequiredEnv", method = RequestMethod.POST)
public @ResponseBody ResponseInfo getRequiredEnv(
@RequestParam("testKey") String testKey,
@RequestParam("testValue") String testValue,
@RequestHeader HttpHeaders headers) {
logger.info("Test Key [" + testKey + "]");
logger.info("Test Value [" + testValue + "]");
return new TestResponseInfo("0001", "ABC");
}
另外还有一个HttpServletRequest.getParameterMap()
,它可以为您提供一个映射。只需将HttpServletRequest
作为方法参数,即可获得请求
如果您事先知道参数,那么使用@modeldattribute
注释类似于表单数据的POJO也应该像这样工作:
@RequestMapping(value = "/getRequiredEnv", method = RequestMethod.POST)
public @ResponseBody ResponseInfo getRequiredEnv(
@RequestBody MultiValueMap<String, String>,
@RequestHeader HttpHeaders headers)
或者,您也可以将数据作为application/json发送,当将jackson作为依赖项包含时,@Requestbody
会将您的数据映射到POJO。看一看
关于第二个问题,httpPost将以正文形式传递参数,因为这是一个POST请求。感谢@dudel的详细阐述。你能告诉我有什么方法可以简单地打印从客户端发送的原始请求/数据而不需要知道参数或任何其他东西吗?在这种情况下,你可以使用
HttpServletRequest
中的getInputStream()
或getReader()
,但请注意,你只能读取一次。完美。我们是否可以稍后按照下面的链接中所述读取请求/数据?嗯,你的意思是使用@RequestBody并且仍然拥有来自inputstream的数据?这将变得更加复杂,但可以使用链接中描述的ServletFilter。此外,此答案可能会对您有所帮助,尽管其目的不同:
@RequestMapping(value = "/getRequiredEnv", method = RequestMethod.POST)
public @ResponseBody ResponseInfo getRequiredEnv(
@RequestParam Map<String, String> allParams,
@RequestHeader HttpHeaders headers)
@RequestMapping(value = "/getRequiredEnv", method = RequestMethod.POST)
public @ResponseBody ResponseInfo getRequiredEnv(
@RequestBody MultiValueMap<String, String>,
@RequestHeader HttpHeaders headers)
@RequestMapping(value = "/getRequiredEnv", method = RequestMethod.POST)
public @ResponseBody ResponseInfo getRequiredEnv(
@@ModelAttribute Test myTestPojo,
@RequestHeader HttpHeaders headers)