1. 程式人生 > 程式設計 >SpringMvc獲取請求頭請求體訊息過程解析

SpringMvc獲取請求頭請求體訊息過程解析

Spring MVC 通過分析處理方法的簽名,將 HTTP 請求信 息繫結到處理方法的相應入參中。

  • Spring MVC 對控制器處理方法簽名的限制是很寬鬆的, 幾乎可以按喜歡的任何方式對方法進行簽名。
  • 必要時可以對方法及方法入參標註相應的註解(@PathVariable、@RequestParam、@RequestHeader等)、Spring MVC 框架會將 HTTP 請求的資訊繫結到相應的方法入參 中,並根據方法的返回值型別做出相應的後續處理。

  對接第三方服務,說傳遞的POST請求中,Request Header中有需要的引數,Request Body為XML格式,包括建立訊息正文和屬性。

  剛開始我以為可以通過 HttpServletRequest 來獲取到RequestBody 中的內容的,比如request.getParameter("TopicOwner"); 可以取到需要的引數,簡直 too yang。

  應該是通過 @RequestBody String body 這樣的註解來完成的,得到的是String 字串

  描述的是:Request Body為XML格式。那麼怎麼可能通過getParameter 獲取到引數呢。只能得到body的String格式啊,然後再自己解析

  這麼一個坑還燒了那麼多腦細胞。。。

  同樣@RequestHeader("Authorization") String authorization,可以很方便的獲取到RequestHeader ,但是隻能一個一個獲取

  可以通過HttpServletRequest 獲取到所有的RequestHeader,如下:

Enumeration<String> headerNames = request.getHeaderNames();
while (headerNames.hasMoreElements()) {
  //獲取每個請求頭名稱
  String headerName = headerNames.nextElement();
  //跟距請求頭獲取請求值
  String value = request.getHeader(headerName);
  System.out.println(headerName + " : " + value);
  log.error(headerName + " : " + value);
}

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支援我們。