Spring:为什么HttpServletRequest.getReader和getInputStream从PO​​ST请求中赋予null以弹出HttpRequestHandler

时间:2014-09-05 01:42:07

标签: spring spring-mvc

我有一个处理POST请求的Spring HttpRequestHandler。但是,HttpServletRequest为空。

我知道我需要调用其中一个,但看起来BOTH为null。什么给出了什么?春天是否有可能粗暴地抓住溪流?如果是这样,我如何在POST请求中获取数据?

class MyRequestHandler extends HttpRequestHandler {
  override def handleRequest(request: HttpServletRequest, response: HttpServletResponse): Unit = {
    println("HANDLE " + request.getReader())  // NULL
    println("HANDLE " + request.getInputStream()) // NULL
  }
}
...
@Configuration
@EnableWebMvc
class MyConfig {  
  @Bean(name = Array("/endpoint"))
  def endpointHandler(): MyRequestHandler = new MyRequestHandler()
  ...
}

1 个答案:

答案 0 :(得分:0)

当没有数据发布时,看起来InputStream对象为null。

为什么没有发布数据?一个RTFM案例:

var mockMvc: MockMvc = ...
...
val result = mockMvc
  .perform(
    post(url, postData)
      .contentType(MediaType.APPLICATION_JSON))

需要看起来像这样

val result = mockMvc
  .perform(
    post(url)
      .content(postData)
      .contentType(MediaType.APPLICATION_JSON))

要发布的后续参数是网址参数:http://docs.spring.io/spring/docs/3.2.0.RC1_to_3.2.0.RC2/Spring%20Framework%203.2.0.RC2/org/springframework/test/web/servlet/request/MockMvcRequestBuilders.html