利用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;
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值