2016-07-01 45 views
0

我使用用SpringMVC,這是我的POST方法:用SpringMVC RequestBody獲得頭

RequestMapping(value = "/test/handler", 
      method = RequestMethod.POST, 
     headers = {"Content-type=application/json"}) 
    public String getOpen(@RequestBody String json, HttpServletRequest request) throws InterruptedException { 

     String result= json;       

     ObjectMapper mapper = new ObjectMapper(); 
     DataJsonMailJet jsonobj = null; 
     try { 

      // read from file, convert it to jsonobj class 
      jsonobj = mapper.readValue(json, DataJsonMailJet.class); 

      // display to console 
      System.out.println(jsonobj); 

     } catch (JsonGenerationException e) { 

      e.printStackTrace(); 

     } catch (JsonMappingException e) { 

      e.printStackTrace(); 

     } catch (IOException e) { 

      e.printStackTrace(); 

     } 


    return (result); 

    } 

的問題是,我的「JSON」對象,甚至還讓頭部像這樣:

------------------------------2fe344dd21f3 
Content-Disposition: form-data; name="0" 

[{"event":"open","time":1467369924, .......}] 
------------------------------2fe344dd21f3-- 

我已嘗試拿出「標題」,但沒有運氣... 有什麼建議嗎?由於

回答

1

嘗試這樣

@RequestMapping(value = "/test/handler", method = RequestMethod.POST) 
public String getOpen(
     @RequestHeader(value="Accept") String accept, 
     @RequestHeader(value="Content-Type") String contentType, 
     @RequestBody String json, 
     HttpServletResponse response) { 

    ... 
    ... 
} 
+0

它給了我下面的錯誤: 缺少標題「內容處置」的方法參數類型[java.lang.String中] - 缺少標題「內容處置」的方法參數類型[java.lang.String] – Kunal

+1

@Kunal - 請刪除它並重試,Content-Disposition是一個響應頭,如果需要的話,我們需要在發送響應時設置這個頭。 –

+0

我設法解決了錯誤,謝謝!這是請求發件人的錯。他們遇到了一些問題,頭部被包含在身體中......謝謝! – Kunal