2016-02-22 90 views
0

我想使用spring 4.2.4版本獲取JSON數據。這裏是我的控制器的代碼;HTTP狀態406:Spring JSON請求

@RequestMapping(value="/getmessage",method=RequestMethod.GET,produces="application/json") 
@ResponseBody 
public Map<String,Object> getMessage(Principal prinicipal){ 

    List<Message>message=null; 
    if(prinicipal==null){ 
     message=new ArrayList<Message>(); 

    } 
    else{ 
     String username=prinicipal.getName(); 
     message=usersService.getMessage(username); 
    } 

    Map<String,Object> data= new HashMap<String,Object>(); 
    data.put("message", message); 
    data.put("number", message.size()); 
    return data; 
} 

的問題是,我得到一個錯誤:HTTP狀態406:「報頭‘’由該請求所標識的資源僅能夠與根據該請求不可接受特徵產生響應的」接受

你平時的幫忙嗎?

+1

難道你'你的要求Accept'頭?你應該設置'Accept:application/json' –

+0

謝謝。我現在試過了,同樣的錯誤正在發生。 –

+0

我把你的方法粘貼到了我的環境中,並且(稍加修改,因爲我沒有Principal,Message或usersService),它工作得很好。我在Spring 4.2.3上,但我無法想象這會有所作爲。 – chrsalln

回答

0

該問題與傑克遜版本有關。 爲了解決這個問題,只是刪除了以下內容:

<dependency> 
      <groupId>org.codehaus.jackson</groupId> 
      <artifactId>jackson-mapper-asl</artifactId> 
      <version>1.9.13</version> 
     </dependency> 
     <dependency> 
      <groupId>org.codehaus.jackson</groupId> 
      <artifactId>jackson-core-asl</artifactId> 
      <version>1.9.13</version> 
     </dependency> 
從您的POM文件

,改爲如下:

<dependency> 
      <groupId>com.fasterxml.jackson.core</groupId> 
      <artifactId>jackson-databind</artifactId> 
      <version>2.6.3</version> 
     </dependency>