云mas 使用Https请求发送 模板短信 和普通短信

本文介绍如何使用RESTful方式通过移动云MAS服务发送短信。具体包括配置restTemplate忽略SSL证书、创建发送请求实体类及发送短信的实现代码。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在因为业务需求要发送短信  做个记录!

我这里采用的是restTemplate 的方式 发送的https的请求。

一.restTemplate 发送https 请求

public class SMSUtil {

    private static final Logger logger = LoggerFactory.getLogger(SMSUtil.class);

    public static final String EC_NAME = "企业名称";

    public static final String AP_ID = "接口id";

    public static final String TEMPLATE_ID = "模板id";

    public static final String MAS_SIGN = "签名编码";

    public static final String SECRET_KEY = "模板密码";
    
    // 移动云mas 的请求url 路径 https 和htpp的不一致 要注意
    public static final String URL = "https://112.35.10.201:28888/sms/tmpsubmit";
    
      @Data
    //创建一个实体类 用于存放报文
    public static class SendRequest {
        String ecName;
        String apId;
        String templateId;
        String mobiles;
        String params;
        String sign;
        String addSerial;
        String mac; //需要MD5加密
    }
     //这里就是发送的具体代码 模板短信的参数 必须要加上 [] 中括号 你也可以用更高级的方式
     public static void sendText(String mobiles, String params) {
        if (params != null) {
            params = "[" + params + "]";
        } else {
            params = "[]";
            logger.error("验证码为空,请及时处理:{}"+params);
        }
        SendRequest sendRequest = new SendRequest();
        String addSerial = "";
        sendRequest.setEcName(EC_NAME);
        sendRequest.setApId(AP_ID);
        sendRequest.setTemplateId(TEMPLATE_ID);
        sendRequest.setMobiles(mobiles);
        sendRequest.setParams(params);
        sendRequest.setSign(MAS_SIGN);
        sendRequest.setAddSerial(addSerial);
        String mac = DigestUtils.md5Hex(EC_NAME + AP_ID + SECRET_KEY + TEMPLATE_ID + mobiles + params + MAS_SIGN + addSerial);
        sendRequest.setMac(mac);

        RestTemplate restTemplate = null;
        try {
        // 需要写一个配置类 用于忽略ssl证书 配置类的代码贴在了下面
            restTemplate = new RestTemplate(RestTemplateConfig.generateHttpRequestFactory());
        } catch (NoSuchAlgorithmException e) {
            e.printStackTrace();
            logger.info("忽略SSL证书异常:{}"+e.getMessage());
            logger.info("忽略SSL证书异常:{}"+e.getMessage());
        } catch (KeyManagementException e) {
            e.printStackTrace();
            logger.info("忽略SSL证书异常:{}"+e.getMessage());
        } catch (KeyStoreException e) {
            e.printStackTrace();
            logger.info("忽略SSL证书异常:{}"+e.getMessage());
        }
        String reqText = JSON.toJSONString(sendRequest);
        String encode = null;
        try {
            encode = Base64.encodeBase64String(reqText.getBytes("UTF-8"));
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
            logger.info("base64编码异常:{}"+e.getMessage());
        }
        System.out.println(encode);
        String resStr = restTemplate.postForObject(URL, encode, String.class);
    }
}

二. restTemplate 的配置类 用于忽略ssl证书

//restTemplate的配置类 用于忽略ssl证书
@Configuration
public class RestTemplateConfig {

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

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

    public static HttpComponentsClientHttpRequestFactory generateHttpRequestFactory()throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException{
        TrustStrategy trustStrategy = (x509Certificates, s) -> true;
        SSLContext sslContext = SSLContexts.custom().loadTrustMaterial(null,trustStrategy).build();
        SSLConnectionSocketFactory connectionSocketFactory = new SSLConnectionSocketFactory(sslContext,new NoopHostnameVerifier());

        HttpClientBuilder httpClientBuilder = HttpClients.custom();
        httpClientBuilder.setSSLSocketFactory(connectionSocketFactory);
        CloseableHttpClient httpClient = httpClientBuilder.build();
        HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();
        factory.setHttpClient(httpClient);
        return  factory;

    }


}

三.普通短信大概一致 只是一些参数和url的变化 这里就不赘述了

因为现在我基本上都是用的restTemplate 发送的方式 网上搜了一圈 基本没搜到 用移动云mas发送https 请求时用的restTemplate 所以这里贴一下 。

如果对你有帮助 麻烦点个赞吧 🤭

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值