欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

RestTemplate 发送http post请求

程序员文章站 2022-06-24 23:40:14
...

RestTemplate :
传统情况下在java代码里访问restful服务,一般使用Apache的HttpClient。不过此种方法使用起来太过繁琐。spring提供了一种简单便捷的模板类来进行操作,这就是RestTemplate来进行http或者https的调用

post请求
对于post请求提交有 FormData和Payload 两种形式:
1.第一种是formdata形式,在header参数里可以直接看到
2.payload则封装成json格式post过去,获取以后需要再解析成实体。

restTemplate post json格式 payload模式

首先需要注册restTemplate的bean

package com.fnm.feynman.hospital.web.config;

import org.springframework.boot.SpringBootConfiguration;
import org.springframework.context.annotation.Bean;
import org.springframework.web.client.RestTemplate;

/**
 * @author yanjun.liu
 * @date 2020/10/15--10:25
 */
@SpringBootConfiguration
public class RestTemplateConfig {

    @Bean
    RestTemplate restTemplate(){
        return new RestTemplate();
    }
}

然后进行发送消息

注入 RestTemplate

    @Resource
    private RestTemplate restTemplate;

发送请求

    @GetMapping("/test")
    public String test() {
        OrderMessageNotice orderMessageNotice = new OrderMessageNotice();
        orderMessageNotice.setOpenId("openId:3");
        orderMessageNotice.setTitle("预约通知");
        orderMessageNotice.setTask("您已成功预约锦绣苑社区卫生服务站的就诊预约,预约时间为:2020-09-28 10:00--11:00");
        log.info("调用建行接口,预约订单url:{}",orderMessageNotice.getUrl());
        JSONObject postData = (JSONObject)JSONObject.toJSON(orderMessageNotice);
        String url="你要请求的url";
        String body = restTemplate.postForEntity(url, postData, String.class).getBody();
        log.info("调用建行接口,预约通知返回的结果body:{}",body);
        //将返回的json字符串转为java  Bean
        OrderMessageNoticeResponse orderMessageNoticeResponse = JSON.parseObject(body, OrderMessageNoticeResponse.class);
    orderMessageNoticeResponse.getSuccess()+orderMessageNoticeResponse.getMsg();
    }

formdata模式。post提交

String url = 'http://posturl';
MultiValueMap<String, String> map= new LinkedMultiValueMap<String, String>();
map.add("shopid","1");
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<MultiValueMap<String, String>>(map, headers);
return restTemplate.postForEntity(url, request,String.class);

//对header进行请求头设置,如果不设置也可以直接post那么就是如下的
//使用默认的请求头,

String url = 'http://posturl';
MultiValueMap<String, String> map= new LinkedMultiValueMap<String, String>();
map.add("shopid","1");
return restTemplate.postForEntity(url, map,String.class);
相关标签: java学习