云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 所以这里贴一下 。

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值