SpringBoot发送Http请求x-www-form-urlencoded格式使用RestTemplate

作者使用的是RestTemplate来发送Http请求

关键代码

      将请求的接口所需数据放入Map中本次以业务环境是模拟发送验证码,消息随需求而定。

        String checkCode = runNumber();
        if(baseService.checkNameAndPhone(reqDTO.getUserName(),reqDTO.getUserPhone())) {
            MultiValueMap<String, String> jsonMap = new LinkedMultiValueMap();
            jsonMap.add("键", "值");
            jsonMap.add("键", "值");
            jsonMap.add("键", "值");
            jsonMap.add("验证码内容", "【" + baseMessages.getCompany() + "】验证码是:" + checkCode + ","+ baseMessages.getAging() +"分钟内有效,如非本人操作,请忽略此短信。");
            jsonMap.add("手机号", reqDTO.getUserPhone());
            HttpRespone hr = sendMessag(jsonMap, "请求接口的访问路径");
            Boolean temp = false;
            if (hr.getResult().hashCode() == "0".hashCode()) {
                 temp = baseService.updateCode(reqDTO.getUserName(), reqDTO.getUserPhone(), checkCode, new Date());
            }
            if(temp == false){
                return failure("验证发送失败!");
            }
            return success("发送成功!");
        }
        return failure("用户或者手机错误!");

请求信息的处理,并设置HTTP 消息实体类型为x-www-form-urlencoded

      请求类型请根据所发送请求接口所要求的实体类型来定,本方法仅针对请求对象接受Json数据为前提。

 public HttpRespone sendMessag(MultiValueMap<String, String> jsonMap, String url) throws URISyntaxException {
        HttpHeaders headers = new HttpHeaders();
        headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
        //System.out.println(jsonMap.size());
        HttpEntity<MultiValueMap<String, String>> httpEntity = new HttpEntity<MultiValueMap<String, String>>(jsonMap, headers);
        String strbody=restTemplate.exchange(url, HttpMethod.POST, httpEntity,String.class).getBody();
        HttpRespone date= JSONObject.parseObject(strbody, HttpRespone.class);
        return date;
    }

回执的映射类

      根据所返回的参数来设计该对象,前提得是其返回的是Json数据

package com.yf.exam.modules.sys.user.dto;

import lombok.Data;
import lombok.ToString;

/**
 * @author :班奈
 * @version 1.0
 * @date 2022/1/13 22:37
 */
@Data
@ToString
public class HttpRespone {
    public String msg;
    public String code;
    public String content;
}

RestTemplate 配置类

/**
 * @author :班奈
 * @version 1.0
 * @date 2022/1/13 20:12
 */
@Configuration
public class RestTemplateConfig {

    @Autowired
    private ApplicationValues appValues;

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

    @Bean
    public ClientHttpRequestFactory simpleClientHttpRequestFactory() {
        SimpleClientHttpRequestFactory factory = new SimpleClientHttpRequestFactory();
        factory.setConnectTimeout(150000);
        factory.setReadTimeout(5000);
        return factory;
    }

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值