springBoot RestTemplate二http post传递json参数的多种方法

目录

 

post请求json数据(添加请求头)

接收端

发送端

测试

post请求json数据(添加请求头)并传递表单参数

请求端

测试

restTemplate.exchange post请求json数据(添加请求头)并传递表单参数

请求端

post请求json数据(添加请求头) 直接传递jsonString数据

RestTemplateBuilder post请求直接传递jsonString数据


post请求json数据(添加请求头)

接收端

   @PostMapping("/callBackFor")
    public JSONObject callBackFor(HttpServletRequest request, @RequestBody JSONObject jsonObject) {
        /*
         *  String data               不可以接受json字符串,只能接收名为data的参数
         * @RequestBody String data 可以以json字符串的形式接收json字符串
         * @RequestBody JSONObject jsonObject 可以接收json字符串并转化为JSONObject对象
         * */
        Enumeration<String> parameterNames = request.getParameterNames();
        while (parameterNames.hasMoreElements()) {//传递json数据的时候request是没有表单参数的
            String parameterName = parameterNames.nextElement();
            System.out.println(parameterName + "===" + request.getParameter(parameterName));
        }
        System.out.println(jsonObject.toJSONString());//

        Enumeration<String> headerNames = request.getHeaderNames();
        while (headerNames.hasMoreElements()){
            String header = headerNames.nextElement();
            System.out.println(header+"=="+request.getHeader(header));
        }

        //无论是@RequestBody String data还是@RequestBody JSONObject jsonObject 最后都要转换为后者,因此建议@RequestBody JSONObject jsonObject接收json字符串
        Set<Map.Entry<String, Object>> entries = jsonObject.entrySet();
        System.out.println("=====我是回调函数=====");
        for (Map.Entry<String, Object> entry : entries) {
            System.out.println(entry.getKey() + "--" + entry.getValue());
        }
        System.out.println("=====================");
        JSONObject result = new JSONObject();
        result.put("code", 1);
        result.put("msg", "调用成功!");
        return result;
    }

发送端

 	/**
     * post请求json数据(添加请求头)
     */
    public static  void test1(){
        RestTemplate restTemplate = new RestTemplate();

        //创建请求头
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        String url = "http://localhost:8087/callBackFor";

        User student = new User("sansan",10);
        HttpEntity<User> entity = new HttpEntity<User>(student, headers);
        ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, entity, String.class);
        String user = responseEntity.getBody();//{"msg":"调用成功!","code":1}
        System.out.println(user);
    }

测试

在这里插入图片描述
在这里插入图片描述

post请求json数据(添加请求头)并传递表单参数

接收端不变

请求端


    /**
     * post请求json数据(添加请求头)并传递表单参数
     */
    public static  void test2(){
         RestTemplate restTemplate = new RestTemplate();

        //创建请求头
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);

        String url = "http://localhost:8087/callBackFor?id={id}";
        Map<String, String> params = new HashMap<String, String>();
        params.put("id", "123");
        User student = new User("sansan",10);
        HttpEntity<User> entity = new HttpEntity<User>(student, headers);
        ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, entity, String.class, params);
        String user = responseEntity.getBody();//{"msg":"调用成功!","code":1}
        System.out.println(user);
    }

测试

在这里插入图片描述

在这里插入图片描述

restTemplate.exchange post请求json数据(添加请求头)并传递表单参数

请求端

   /**
     * restTemplate.exchange post请求json数据(添加请求头)并传递表单参数
     * exchange可以发送HttpMethod.POST,DELE,GET,PUT请求;
     */
    public static  void test3(){
        RestTemplate restTemplate = new RestTemplate();

        //创建请求头
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);

        String url = "http://localhost:8087/callBackFor?id={id}";

        //params是url中出现的路径变量
        Map<String, String> params = new HashMap<String, String>();
        params.put("id", "123");
        User student = new User("sansan",10);

        //entity包含请求的对象和消息头;
        HttpEntity<User> entity = new HttpEntity<User>(student, headers);

        ResponseEntity<String> responseEntity = restTemplate.exchange(url, HttpMethod.POST, entity, String.class, params);
        String user = responseEntity.getBody();//{"msg":"调用成功!","code":1}
        System.out.println(user);
    }

在这里插入图片描述

post请求json数据(添加请求头) 直接传递jsonString数据

     /**
     * post请求json数据(添加请求头)  直接传递jsonString数据
     */
    public static  void test4(){
        RestTemplate restTemplate = new RestTemplate();

        //创建请求头
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        //也可以这样设置contentType
        //MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
        //headers.setContentType(type);

        //加不加Accept都可以
        //headers.add("Accept", MediaType.APPLICATION_JSON.toString());

        String url = "http://localhost:8087/callBackFor";

        User student = new User("sansan",19);
        String jsonString = JSONObject.toJSONString(student);
        System.out.println(jsonString);//{"age":10,"name":"sansan"}

        HttpEntity<String> entity = new HttpEntity<String>(jsonString, headers);
        ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, entity, String.class);
        String user = responseEntity.getBody();//{"msg":"调用成功!","code":1}
        System.out.println(user);
    }

在这里插入图片描述
在这里插入图片描述

RestTemplateBuilder post请求直接传递jsonString数据

     /**
     * RestTemplateBuilder   post请求json数据(添加请求头)  直接传递jsonString数据
     */
    public static  void test5(){
        //RestTemplate restTemplate = new RestTemplate();
        RestTemplateBuilder restTemplateBuilder = new RestTemplateBuilder();
        RestTemplate restTemplate = restTemplateBuilder.build();

        //创建请求头
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_JSON);
        //也可以这样设置contentType
        //MediaType type = MediaType.parseMediaType("application/json; charset=UTF-8");
        //headers.setContentType(type);

        //加不加Accept都可以
        //headers.add("Accept", MediaType.APPLICATION_JSON.toString());

        String url = "http://localhost:8087/callBackFor";

        User student = new User("sansan",19);
        String jsonString = JSONObject.toJSONString(student);
        System.out.println(jsonString);//{"age":10,"name":"sansan"}

        HttpEntity<String> entity = new HttpEntity<String>(jsonString, headers);
        ResponseEntity<String> responseEntity = restTemplate.postForEntity(url, entity, String.class);
        String user = responseEntity.getBody();//{"msg":"调用成功!","code":1}
        System.out.println(user);
    }
  • 11
    点赞
  • 66
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值