1. 程式人生 > >利用SpringBoot讀取http request的基本內容

利用SpringBoot讀取http request的基本內容

在利用Springboot熟悉http基本內容的時候,自己弄了一個很簡單的demo,將一個http請求中的內容轉化成String格式打印出來。

程式碼如下:

其中:

1. IOUtils,用於將InputStream轉化成Spring;

2. @ResponseBody註解用於返回處理結果,如果沒有的話,請求頁面會報不支援"GET"或者"POST"方法的錯誤。

3. @Controller,有Controller,這個類才會被掃描到;

4. @SpringBootApplication:在SpringBoot的啟動類上,需要新增@SpringBootAapplication註解,這樣才會去掃描同根目錄下的其他類;

    @SpringBootApplication = @Controller + @EnableAutoConfiguration + @ComponentScan

5. @RequesterMapping註解用於對映不同的uri,具體用法參考RequestMapping這個註解本身;

6. 可以用postman傳送模擬請求對這部分程式碼進行測試。

-------------------------------------------------- 分割線 --------------------------------------------------

package helloworld.controller;
import org.apache.commons.io.IOUtils; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestMethod; import org.springframework.web.bind.annotation.ResponseBody; import javax.servlet.http.HttpServletRequest;
import java.io.IOException; import java.io.InputStream; import java.util.ArrayList; import java.util.Enumeration; import java.util.List; import java.util.Map; import java.util.Map.Entry; @Controller public class RequestController { @RequestMapping("/david") @ResponseBody String david() { return "Hello, David!"; } @RequestMapping(value = "/angus/**", method = RequestMethod.GET) @ResponseBody public String getProcess(HttpServletRequest request){ String retrunValue = "Hello, Angus! This is GET request!"; System.out.println("=======GET Process======="); Map<String,String[]> requestMsg = request.getParameterMap(); Enumeration<String> requestHeader = request.getHeaderNames(); System.out.println("------- header -------"); while(requestHeader.hasMoreElements()){ String headerKey=requestHeader.nextElement().toString(); //列印所有Header值 System.out.println("headerKey="+headerKey+";value="+request.getHeader(headerKey)); } System.out.println("------- parameter -------"); for(String key :requestMsg.keySet()) { for(int i=0;i<requestMsg.get(key).length;i++) { //列印所有請求引數值 System.out.println("key="+key+";value="+requestMsg.get(key)[i].toString()); } } return retrunValue; } @RequestMapping(value = "/angus/**", method = RequestMethod.POST) @ResponseBody public String postProcess(HttpServletRequest request){ String retrunValue = "Hello, Angus! This is POST Request!"; System.out.println("=======POST Process======="); Map<String,String[]> requestMsg = request.getParameterMap(); Enumeration<String> requestHeader = request.getHeaderNames(); InputStream io = null; String body; System.out.println("------- body -------"); try{ io = request.getInputStream(); body = IOUtils.toString(io); //列印BODY內容 System.out.println("Request Body="+body); }catch(IOException e){ e.printStackTrace(); } System.out.println("------- header -------"); while(requestHeader.hasMoreElements()){ String headerKey=requestHeader.nextElement().toString(); //列印所有Header值 System.out.println("headerKey="+headerKey+";value="+request.getHeader(headerKey)); } System.out.println("------- parameters -------"); for(String key :requestMsg.keySet()) { for(int i=0;i<requestMsg.get(key).length;i++) { //列印所有請求引數值 System.out.println("key="+key+";value="+requestMsg.get(key)[i].toString()); } } return retrunValue; } }