news 2026/8/31 20:28:36

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

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
云mas 使用Https请求发送 模板短信 和普通短信

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

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

一.restTemplate 发送https 请求

  1. public class SMSUtil {

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

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

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

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

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

  7. public static final String SECRET_KEY = "模板密码";

  8. // 移动云mas 的请求url 路径 https 和htpp的不一致 要注意

  9. public static final String URL = "https://112.35.10.201:28888/sms/tmpsubmit";

  10. @Data

  11. //创建一个实体类 用于存放报文

  12. public static class SendRequest {

  13. String ecName;

  14. String apId;

  15. String templateId;

  16. String mobiles;

  17. String params;

  18. String sign;

  19. String addSerial;

  20. String mac; //需要MD5加密

  21. }

  22. //这里就是发送的具体代码 模板短信的参数 必须要加上 [] 中括号 你也可以用更高级的方式

  23. public static void sendText(String mobiles, String params) {

  24. if (params != null) {

  25. params = "[" + params + "]";

  26. } else {

  27. params = "[]";

  28. logger.error("验证码为空,请及时处理:{}"+params);

  29. }

  30. SendRequest sendRequest = new SendRequest();

  31. String addSerial = "";

  32. sendRequest.setEcName(EC_NAME);

  33. sendRequest.setApId(AP_ID);

  34. sendRequest.setTemplateId(TEMPLATE_ID);

  35. sendRequest.setMobiles(mobiles);

  36. sendRequest.setParams(params);

  37. sendRequest.setSign(MAS_SIGN);

  38. sendRequest.setAddSerial(addSerial);

  39. String mac = DigestUtils.md5Hex(EC_NAME + AP_ID + SECRET_KEY + TEMPLATE_ID + mobiles + params + MAS_SIGN + addSerial);

  40. sendRequest.setMac(mac);

  41. RestTemplate restTemplate = null;

  42. try {

  43. // 需要写一个配置类 用于忽略ssl证书 配置类的代码贴在了下面

  44. restTemplate = new RestTemplate(RestTemplateConfig.generateHttpRequestFactory());

  45. } catch (NoSuchAlgorithmException e) {

  46. e.printStackTrace();

  47. logger.info("忽略SSL证书异常:{}"+e.getMessage());

  48. logger.info("忽略SSL证书异常:{}"+e.getMessage());

  49. } catch (KeyManagementException e) {

  50. e.printStackTrace();

  51. logger.info("忽略SSL证书异常:{}"+e.getMessage());

  52. } catch (KeyStoreException e) {

  53. e.printStackTrace();

  54. logger.info("忽略SSL证书异常:{}"+e.getMessage());

  55. }

  56. String reqText = JSON.toJSONString(sendRequest);

  57. String encode = null;

  58. try {

  59. encode = Base64.encodeBase64String(reqText.getBytes("UTF-8"));

  60. } catch (UnsupportedEncodingException e) {

  61. e.printStackTrace();

  62. logger.info("base64编码异常:{}"+e.getMessage());

  63. }

  64. System.out.println(encode);

  65. String resStr = restTemplate.postForObject(URL, encode, String.class);

  66. }

  67. }

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

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

  2. @Configuration

  3. public class RestTemplateConfig {

  4. @Bean

  5. public RestTemplate restTemplate(ClientHttpRequestFactory factory){

  6. return new RestTemplate(factory);

  7. }

  8. @Bean

  9. public ClientHttpRequestFactory simpleClientHttpRequestFactory(){

  10. HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();

  11. factory.setConnectTimeout(15000);

  12. factory.setReadTimeout(5000);

  13. return factory;

  14. }

  15. public static HttpComponentsClientHttpRequestFactory generateHttpRequestFactory()throws NoSuchAlgorithmException, KeyManagementException, KeyStoreException{

  16. TrustStrategy trustStrategy = (x509Certificates, s) -> true;

  17. SSLContext sslContext = SSLContexts.custom().loadTrustMaterial(null,trustStrategy).build();

  18. SSLConnectionSocketFactory connectionSocketFactory = new SSLConnectionSocketFactory(sslContext,new NoopHostnameVerifier());

  19. HttpClientBuilder httpClientBuilder = HttpClients.custom();

  20. httpClientBuilder.setSSLSocketFactory(connectionSocketFactory);

  21. CloseableHttpClient httpClient = httpClientBuilder.build();

  22. HttpComponentsClientHttpRequestFactory factory = new HttpComponentsClientHttpRequestFactory();

  23. factory.setHttpClient(httpClient);

  24. return factory;

  25. }

  26. }

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

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

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

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/28 8:50:54

7.1 强化学习(Reinforcement learning,RL)概述

目录 核心组成部分 核心原理:马尔可夫决策过程 主要算法分类 1. 基于价值 (Value-Based) vs. 基于策略 (Policy-Based) 2. 同策略 (On-Policy) vs. 异策略 (Off-Policy) 深度强化学习 (Deep Reinforcement Learning) 主要挑战 应用领域 总结 本文详细介绍强…

作者头像 李华
网站建设 2026/8/25 17:53:10

Docker镜像闭环验证:构建坚不可摧的容器质量防线

为什么闭环验证是容器化测试的命脉‌在微服务与云原生架构主导的今天,软件测试已从“人工验证功能”演变为“自动化验证交付流”。Docker镜像作为应用交付的最小单元,其质量直接决定生产环境的稳定性。传统测试模式中,镜像构建、测试执行、安…

作者头像 李华
网站建设 2026/8/25 17:57:20

AI赋能合同管理,为企业风险防控装上“智能中枢“

在数字化浪潮席卷全球的今天,人工智能正以前所未有的速度渗透到企业管理的各个环节。合同管理作为企业运营的核心环节,长期以来面临着效率低下、风险隐晦、管理成本高等挑战。而今,AI技术的深入应用,正在彻底改变这一局面&#xf…

作者头像 李华