Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/list/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Spring 406不适用于列表-休息_Spring_List_Rest_Spring Mvc_Http Status Code 406 - Fatal编程技术网

Spring 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

我试图找到一种方法来代替包装类,但我总是得到406个不可接受的错误。我在网上搜索并尝试了许多不同的方法,但都无法修复

@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"}