From 4dfc81531cba8e10ea569559389cdcbd50f4bacd Mon Sep 17 00:00:00 2001
From: 无关风月 <443237572@qq.com>
Date: 星期三, 27 十一月 2024 19:24:52 +0800
Subject: [PATCH] 代码提交
---
xinquan-auth/src/main/java/com/xinquan/auth/util/HWSendSms.java | 271 ++++++++++++++++++++++++++---------------------------
1 files changed, 134 insertions(+), 137 deletions(-)
diff --git a/xinquan-auth/src/main/java/com/xinquan/auth/util/HWSendSms.java b/xinquan-auth/src/main/java/com/xinquan/auth/util/HWSendSms.java
index c44dae6..da83def 100644
--- a/xinquan-auth/src/main/java/com/xinquan/auth/util/HWSendSms.java
+++ b/xinquan-auth/src/main/java/com/xinquan/auth/util/HWSendSms.java
@@ -1,140 +1,137 @@
-//package com.xinquan.auth.util;
+package com.xinquan.auth.util;
+
+import com.cloud.apigateway.sdk.utils.Client;
+import com.cloud.apigateway.sdk.utils.Request;
+import org.apache.http.Header;
+import org.apache.http.HttpEntity;
+import org.apache.http.HttpResponse;
+import org.apache.http.client.methods.HttpRequestBase;
+import org.apache.http.conn.ssl.NoopHostnameVerifier;
+import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
+import org.apache.http.impl.client.CloseableHttpClient;
+import org.apache.http.impl.client.HttpClients;
+import org.apache.http.ssl.SSLContextBuilder;
+import org.apache.http.util.EntityUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+import org.springframework.beans.factory.annotation.Value;
+import org.springframework.stereotype.Component;
+
+import javax.net.ssl.SSLContext;
+import java.io.UnsupportedEncodingException;
+import java.net.URLEncoder;
+import java.util.Arrays;
+
+@Component
+public class HWSendSms {
+ private static final Logger LOGGER = LoggerFactory.getLogger(HWSendSms.class);
+
+ public static final String UTF_8 = "UTF-8";
+
+ private static CloseableHttpClient client = null;
+
+ public static void main(String[] args) throws Exception {
+ // 为防止因HTTPS证书认证失败造成API调用失败,需要先忽略证书信任问题
+ }
+
+ public void sendSms(String code,String receiver) throws Exception {
+ client = createIgnoreSSLHttpClient();
+ //必填,请参考"开发准备"获取如下数据,替换为实际值
+// String url = "https://smsapi.ap-southeast-1.myhuaweicloud.com:443/sms/batchSendSms/v1"; //APP接入地址+接口访问URI
+// // 认证用的appKey和appSecret硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;
+// String appKey = "c8RWg3gg************3Y7x1Ile"; //Application Key
+// String appSecret = "q4Ii87Bh************80SfD7Al"; //Application Secret
+// String sender = "csms12345678"; //中国大陆短信签名通道号或全球短信通道号
+// String templateId = "8ff55eac1d0b478ab3c06c3c6a492300"; //模板ID
//
-//import com.cloud.apigateway.sdk.utils.Client;
-//import com.cloud.apigateway.sdk.utils.Request;
-//import org.apache.http.Header;
-//import org.apache.http.HttpEntity;
-//import org.apache.http.HttpResponse;
-//import org.apache.http.client.methods.HttpRequestBase;
-//import org.apache.http.conn.ssl.NoopHostnameVerifier;
-//import org.apache.http.conn.ssl.SSLConnectionSocketFactory;
-//import org.apache.http.impl.client.CloseableHttpClient;
-//import org.apache.http.impl.client.HttpClients;
-//import org.apache.http.ssl.SSLContextBuilder;
-//import org.apache.http.util.EntityUtils;
-//import org.slf4j.Logger;
-//import org.slf4j.LoggerFactory;
-//import org.springframework.beans.factory.annotation.Value;
-//import org.springframework.stereotype.Component;
+// //条件必填,中国大陆短信关注,当templateId指定的模板类型为通用模板时生效且必填,必须是已审核通过的,与模板类型一致的签名名称
+// //全球短信不用关注该参数
+// String signature = "华为云短信测试"; //签名名称
//
-//import javax.net.ssl.SSLContext;
-//import java.io.UnsupportedEncodingException;
-//import java.net.URLEncoder;
-//import java.util.Arrays;
+// //必填,全局号码格式(包含国家码),示例:+86151****6789,多个号码之间用英文逗号分隔
+// String receiver = "+86151****6789,+86152****7890"; //短信接收人号码
//
-//@Component
-//public class HWSendSms {
-//
-//
-// private static final Logger LOGGER = LoggerFactory.getLogger(HWSendSms.class);
-//
-// public static final String UTF_8 = "UTF-8";
-//
-// private static CloseableHttpClient client = null;
-//
-// public static void main(String[] args) throws Exception {
-// // 为防止因HTTPS证书认证失败造成API调用失败,需要先忽略证书信任问题
-//// client = createIgnoreSSLHttpClient();
-//// sendSms();
-// }
-//
-// public void sendSms(String code,String receiver) throws Exception {
-// client = createIgnoreSSLHttpClient();
-// //必填,请参考"开发准备"获取如下数据,替换为实际值
-//// String url = "https://smsapi.ap-southeast-1.myhuaweicloud.com:443/sms/batchSendSms/v1"; //APP接入地址+接口访问URI
-//// // 认证用的appKey和appSecret硬编码到代码中或者明文存储都有很大的安全风险,建议在配置文件或者环境变量中密文存放,使用时解密,确保安全;
-//// String appKey = "c8RWg3gg************3Y7x1Ile"; //Application Key
-//// String appSecret = "q4Ii87Bh************80SfD7Al"; //Application Secret
-//// String sender = "csms12345678"; //中国大陆短信签名通道号或全球短信通道号
-//// String templateId = "8ff55eac1d0b478ab3c06c3c6a492300"; //模板ID
-////
-//// //条件必填,中国大陆短信关注,当templateId指定的模板类型为通用模板时生效且必填,必须是已审核通过的,与模板类型一致的签名名称
-//// //全球短信不用关注该参数
-//// String signature = "华为云短信测试"; //签名名称
-////
-//// //必填,全局号码格式(包含国家码),示例:+86151****6789,多个号码之间用英文逗号分隔
-//// String receiver = "+86151****6789,+86152****7890"; //短信接收人号码
-////
-//// //选填,短信状态报告接收地址,推荐使用域名,为空或者不填表示不接收状态报告
-// String statusCallBack = "";
-//
-// /**
-// * 选填,使用无变量模板时请赋空值 String templateParas = "";
-// * 单变量模板示例:模板内容为"您的验证码是${NUM_6}"时,templateParas可填写为"[\"111111\"]"
-// * 双变量模板示例:模板内容为"您有${NUM_2}件快递请到${TXT_20}领取"时,templateParas可填写为"[\"3\",\"人民公园正门\"]"
-// * 查看更多模板规范和变量规范:产品介绍>短信模板须知和短信变量须知
-// */
-// String templateParas = "[\""+code+"\"]"; //模板变量,此处以单变量验证码短信为例,请客户自行生成6位验证码,并定义为字符串类型,以杜绝首位0丢失的问题(例如:002569变成了2569)。
-//
-// //请求Body,不携带签名名称时,signature请填null
-// String body = buildRequestBody("8824110423893", receiver, "767ad27dce184a32a4b4863517fbd301", templateParas, statusCallBack, "心泉智慧");
-// if (null == body || body.isEmpty()) {
-// LOGGER.warn("body is null.");
-// return;
-// }
-//
-// Request request = new Request();
-// request.setKey("dFbKS778KG0jvQrQ672b9RaOktfV");
-// request.setSecret("3QsteXCIY3KRfgXf5zXyi6f3cHBj");
-// request.setMethod("POST");
-// request.setUrl("https://smsapi.cn-north-4.myhuaweicloud.com:443/sms/batchSendSms/v1");
-// request.addHeader("Content-Type", "application/x-www-form-urlencoded");
-// request.setBody(body);
-// LOGGER.info("Print the body: {}", body);
-// try {
-// HttpRequestBase signedRequest = Client.sign(request, "SDK-HMAC-SHA256");
-// LOGGER.info("Print the authorization: {}", Arrays.toString(signedRequest.getHeaders("Authorization")));
-// Header[] requestAllHeaders = signedRequest.getAllHeaders();
-// for (Header h : requestAllHeaders) {
-// LOGGER.info("req Header with name: {} and value: {}", h.getName(), h.getValue());
-// }
-//
-// HttpResponse response = client.execute(signedRequest);
-//
-// LOGGER.info("Print the status line of the response: {}", response.getStatusLine().toString());
-// Header[] resHeaders = response.getAllHeaders();
-// for (Header h : resHeaders) {
-// LOGGER.info("Processing Header with name: {} and value: {}", h.getName(), h.getValue());
-// }
-// HttpEntity resEntity = response.getEntity();
-// if (resEntity != null) {
-// LOGGER.info("Processing Body with name: {} and value: {}",
-// System.getProperty("line.separator"),
-// EntityUtils.toString(resEntity, "UTF-8"));
-// }
-// } catch (Exception e) {
-// LOGGER.info(e.getMessage(), e);
-// e.printStackTrace();
-// }
-// }
-//
-// public CloseableHttpClient createIgnoreSSLHttpClient() throws Exception {
-// SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, (x509CertChain, authType) -> true).build();
-// return HttpClients.custom().setSSLSocketFactory(new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE)).build();
-// }
-//
-// static String buildRequestBody(String sender, String receiver, String templateId, String templateParas,
-// String statusCallBack, String signature) throws UnsupportedEncodingException {
-// if (null == sender || null == receiver || null == templateId || sender.isEmpty() || receiver.isEmpty()
-// || templateId.isEmpty()) {
-// System.out.println("buildRequestBody(): sender, receiver or templateId is null.");
-// return null;
-// }
-//
-// StringBuilder body = new StringBuilder();
-// appendToBody(body, "from=", sender);
-// appendToBody(body, "&to=", receiver);
-// appendToBody(body, "&templateId=", templateId);
-// appendToBody(body, "&templateParas=", templateParas);
-// appendToBody(body, "&statusCallback=", statusCallBack);
-// appendToBody(body, "&signature=", signature);
-// return body.toString();
-// }
-//
-// private static void appendToBody(StringBuilder body, String key, String val) throws UnsupportedEncodingException {
-// if (null != val && !val.isEmpty()) {
-// LOGGER.info("Print appendToBody: {}:{}", key, val);
-// body.append(key).append(URLEncoder.encode(val, UTF_8));
-// }
-// }
-//}
+// //选填,短信状态报告接收地址,推荐使用域名,为空或者不填表示不接收状态报告
+ String statusCallBack = "";
+
+ /**
+ * 选填,使用无变量模板时请赋空值 String templateParas = "";
+ * 单变量模板示例:模板内容为"您的验证码是${NUM_6}"时,templateParas可填写为"[\"111111\"]"
+ * 双变量模板示例:模板内容为"您有${NUM_2}件快递请到${TXT_20}领取"时,templateParas可填写为"[\"3\",\"人民公园正门\"]"
+ * 查看更多模板规范和变量规范:产品介绍>短信模板须知和短信变量须知
+ */
+ String templateParas = "[\""+code+"\"]"; //模板变量,此处以单变量验证码短信为例,请客户自行生成6位验证码,并定义为字符串类型,以杜绝首位0丢失的问题(例如:002569变成了2569)。
+
+ //请求Body,不携带签名名称时,signature请填null
+ String body = buildRequestBody("8824110423893", receiver, "767ad27dce184a32a4b4863517fbd301",
+ templateParas, statusCallBack, "心泉智慧");
+ if (null == body || body.isEmpty()) {
+ LOGGER.warn("body is null.");
+ return;
+ }
+
+ Request request = new Request();
+ request.setKey("dFbKS778KG0jvQrQ672b9RaOktfV");
+ request.setSecret("3QsteXCIY3KRfgXf5zXyi6f3cHBj");
+ request.setMethod("POST");
+ request.setUrl("https://smsapi.cn-south-1.myhuaweicloud.com:443/sms/batchSendSms/v1");
+ request.addHeader("Content-Type", "application/x-www-form-urlencoded");
+ request.setBody(body);
+ LOGGER.info("Print the body: {}", body);
+ try {
+ HttpRequestBase signedRequest = Client.sign(request, "SDK-HMAC-SHA256");
+ LOGGER.info("Print the authorization: {}", Arrays.toString(signedRequest.getHeaders("Authorization")));
+ Header[] requestAllHeaders = signedRequest.getAllHeaders();
+ for (Header h : requestAllHeaders) {
+ LOGGER.info("req Header with name: {} and value: {}", h.getName(), h.getValue());
+ }
+
+ HttpResponse response = client.execute(signedRequest);
+
+ LOGGER.info("Print the status line of the response: {}", response.getStatusLine().toString());
+ Header[] resHeaders = response.getAllHeaders();
+ for (Header h : resHeaders) {
+ LOGGER.info("Processing Header with name: {} and value: {}", h.getName(), h.getValue());
+ }
+ HttpEntity resEntity = response.getEntity();
+ if (resEntity != null) {
+ LOGGER.info("Processing Body with name: {} and value: {}",
+ System.getProperty("line.separator"),
+ EntityUtils.toString(resEntity, "UTF-8"));
+ }
+ } catch (Exception e) {
+ LOGGER.info(e.getMessage(), e);
+ e.printStackTrace();
+ }
+ }
+
+ public CloseableHttpClient createIgnoreSSLHttpClient() throws Exception {
+ SSLContext sslContext = new SSLContextBuilder().loadTrustMaterial(null, (x509CertChain, authType) -> true).build();
+ return HttpClients.custom().setSSLSocketFactory(new SSLConnectionSocketFactory(sslContext, NoopHostnameVerifier.INSTANCE)).build();
+ }
+
+ static String buildRequestBody(String sender, String receiver, String templateId, String templateParas,
+ String statusCallBack, String signature) throws UnsupportedEncodingException {
+ if (null == sender || null == receiver || null == templateId || sender.isEmpty() || receiver.isEmpty()
+ || templateId.isEmpty()) {
+ System.out.println("buildRequestBody(): sender, receiver or templateId is null.");
+ return null;
+ }
+
+ StringBuilder body = new StringBuilder();
+ appendToBody(body, "from=", sender);
+ appendToBody(body, "&to=", receiver);
+ appendToBody(body, "&templateId=", templateId);
+ appendToBody(body, "&templateParas=", templateParas);
+ appendToBody(body, "&statusCallback=", statusCallBack);
+ appendToBody(body, "&signature=", signature);
+ return body.toString();
+ }
+
+ private static void appendToBody(StringBuilder body, String key, String val) throws UnsupportedEncodingException {
+ if (null != val && !val.isEmpty()) {
+ LOGGER.info("Print appendToBody: {}:{}", key, val);
+ body.append(key).append(URLEncoder.encode(val, UTF_8));
+ }
+ }
+}
--
Gitblit v1.7.1