Spring 406不适用于列表-休息
我试图找到一种方法来代替包装类,但我总是得到406个不可接受的错误。我在网上搜索并尝试了许多不同的方法,但都无法修复Spring 406不适用于列表-休息,spring,list,rest,spring-mvc,http-status-code-406,Spring,List,Rest,Spring Mvc,Http Status Code 406,我试图找到一种方法来代替包装类,但我总是得到406个不可接受的错误。我在网上搜索并尝试了许多不同的方法,但都无法修复 @RequestMapping(value = "/users/getlist", headers="Accept=application/xml, application/json", method=RequestMethod.POST) public @ResponseBody List<Permission> getList(@RequestParam Stri
@RequestMapping(value = "/users/getlist", headers="Accept=application/xml, application/json", method=RequestMethod.POST)
public @ResponseBody List<Permission> getList(@RequestParam String userEmail) {
List<Permission> permissions = service.getPermissions(userEmail);
return permissions;
}
@RequestMapping(value=“/users/getlist”,headers=“Accept=application/xml,application/json”,method=RequestMethod.POST)
public@ResponseBody List getList(@RequestParam String userEmail){
列表权限=service.getPermissions(userEmail);
返回权限;
}
及
MultiValueMap userMap=newlinkedmultivaluemap();
添加(“用户电子邮件”,电子邮件地址);
//准备可接受的介质类型
List acceptableMediaTypes=new ArrayList();
acceptableMediaTypes.add(MediaType.APPLICATION\uXML);
//准备收割台
HttpHeaders=新的HttpHeaders();
headers.setAccept(acceptableMediaTypes);
HttpEntity userEntity=新的HttpEntity(userMap,headers);
列表权限=restTemplate.postForObject(“http://localhost:8080/users/getlist,userEntity,List.class);
我也试过了
List<Permission> permissions = (List<Permission>) restTemplate.postForEntity("http://localhost:8080/users/getlist", userEntity, List.class);
列表权限=(列表)restTemplate.postForEntity(“http://localhost:8080/users/getlist,userEntity,List.class);
所以基本上,如果我使用一个带有getter和setter的包装器类,它就可以工作了。但是我需要创建许多包装器类。你有什么想法可以这样实施吗
解决方案:
没有向http实体添加mediatype。我相信
headers="Accept=application/xml, application/json"
将要求您的Accept
头实际具有值application/xml、application/json
。你的要求没有
您可以添加一种可接受的媒体类型
List<MediaType> acceptableMediaTypes = new ArrayList<MediaType>();
acceptableMediaTypes.add(MediaType.APPLICATION_XML);
它与声明的@RequestMapping
不匹配
相反,如果希望标题
与application/xml
或application/json
匹配,可以这样做
headers= {"Accept=application/xml", "Accept=application/json"}
或者更好
produces = {"application/xml", "application/json"}
谢谢你的回答。我试过了,但仍然得到了406错误。你还有其他建议吗?@user3058742你的课程路径上有Jackson吗?我有。当它是单个对象时,没有问题。我搞不清集合。@user3058742您使用的是哪个Spring和Jackson版本?我将尝试复制。春季4.0.1.RELEASE,jackson 1.9.13-谢谢!
headers= {"Accept=application/xml", "Accept=application/json"}
produces = {"application/xml", "application/json"}