org.springframework.http.converter.HttpMessageNotReadableException: Could not read JSON: No content to map to Object due to end of input; 异常处理后的结果示例如下:
对于在SprngMVC 控制器层使用 @RequestBody 注解作为参数使用 MockHttpServletRequest 进行测试示例:
//运行类
@RunWith(SpringJUnit4ClassRunner.class)
//bean的配置文件路径
@ContextConfiguration(locations = {"/com/wangmeng/dpap/module/springmvctest/spring.xml", "/com/wangmeng/dpap/module/springmvctest/springmvc-servlet.xml"})
public class EmpControllerTest {
//注入 controll 控制器
@Autowired
private EmpController empController;
@Autowired
private RequestMappingHandlerAdapter handlerAdapter;
//定义request 对象
MockHttpServletRequest request = new MockHttpServletRequest();
//定义 response 对象
MockHttpServletResponse response = new MockHttpServletResponse();
@Test
public void insertEmpTest(){
String emp="{\"name\":\"emptest\",\"age\":10}";
//请求路径
request.setRequestURI("springmvctest/empAdd");
//请求方式
request.setMethod(HttpMethod.POST.name());
//请求方式为JSON (如果在Control 层中参数接收方式@RequestBody 必须要设置请求方式为 JSON)
request.setContentType("application/json;charset=UTF-8");
//设置请求数据 对于注解使用的 @RequestBody 使用setContent() 传递参数,对于使用的注解是@RequestParam就可以使用addParameter() 传递参数
request.setContent(emp.getBytes()); //在springMVC 通过 MappingJackson2HttpMessageConverter 将json 转化为 JavaBean 对象设置的请求信息,如果不使用该方法就会 抛出 org.springframework.http.converter.HttpMessageNotReadableException: Could not read JSON: No content to map to Object due to end of input;
try {
handlerAdapter.handle(request, response, new HandlerMethod(empController,"insertEmp",EmpVo.class));
//获取@ResponseBody 的返回信息
String bodyStr = response.getContentAsString();
Assert.assertNotNull(bodyStr);
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
//@Test
public void deleteEmpTest(){
request.addParameter("id","1000");
request.setRequestURI("springmvctest/deleteEmp");
request.setMethod(HttpMethod.POST.name());
request.setContentType("application/json;charset=UTF-8");
// 在控制层如果返回的是ModelAndView 即可使用该对象
ModelAndView view = new ModelAndView();
try {
view = handlerAdapter.handle(request, response, new HandlerMethod(empController,"deleteEmp",String.class));
Assert.assertEquals("springmvctest/index", view.getViewName());
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
Assert.assertNull(view);
}
// @Test
public void empListTest(){
request.addParameter("seachKey","");
request.addParameter("start","0");
request.addParameter("limit","20");
request.setRequestURI("springmvctest/empList");
request.setMethod(HttpMethod.POST.name());
request.setContentType("application/json;charset=UTF-8");
ModelAndView view = new ModelAndView();
try {
view = handlerAdapter.handle(request, response, new HandlerMethod(empController,"empList",String.class,int.class,int.class));
Assert.assertNotNull(view);
} catch (NoSuchMethodException e) {
// TODO Auto-generated catch block
e.printStackTrace();
} catch (Exception e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
}
相关推荐
浅析@ReponseBody和@RequestBody注解主要讲述了@ReponseBody的作用和@RequestBody的作用和springMvc内部是如何对他们进行解析的
NULL 博文链接:https://bijian1013.iteye.com/blog/2310240
本篇文章主要介绍了springMvc注解之@ResponseBody和@RequestBody详解,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
主要介绍了SpringMVC restful 注解之@RequestBody进行json与object转换的相关资料,需要的朋友可以参考下
模拟了基本前端与后端交互JSon数据,使用了Java语言+Maven+SpringMVC+Ajax @RequestBody+Json传输完成基本数据交互
NULL 博文链接:https://bijian1013.iteye.com/blog/2310236
今天小编就为大家分享快速解决SpringMVC @RequestBody 用map接收请求参数的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
主要介绍了详解SpringMVC @RequestBody接收Json对象字符串,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
SpringMVC@RequestMapping(重点)@RequestParam@PathVariable示例
主要介绍了Spring MVC参数校验的相关资料,主要是针对`@RequestBody`返回`400`的问题,文中通过示例代码介绍的非常详细,对大家具有一定的参考学习价值,需要的朋友们下面跟着小编来一起学习学习吧。
如果传输的是多层嵌套json对象,这个时候会就会出现数据丢失问题 @ResponseBody很好的解决了这个问题,它会把前台传输过来的json转化为后台对应的对象
SpringMVC+MyBatis+MySql注解示例.。整合好的一个demo 可以下载来学习学习
2.请求头中正确设置了Content-Type参数及参数值,但是在项目jar依赖中(pom.xml或build.gradle)没有添加处理json字符串的处理类
主要介绍了Spring MVC打印@RequestBody、@Response日志的方法,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
springmvc对json支持
主要介绍了SpringMvc自定义拦截器(注解)代码实例,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
SpringMVC注解驱动的控制器详解,具体效果与过程看博文 http://blog.csdn.net/evankaka/article/details/45562951
分享一个使用SpringMVC4 Rest 和Jackson的@JsonView注解集成的实例。@JsonView用来过滤JSON响应。Spring4.1开始直接支持@JsonView注解。要使用@JsonView,首先我们需要定义视图,我们可以定义多个视图。一个视图定义...
springmvc框架注解和非注解实现,对比两种事项方式差异,理解注解优势。