Răsfoiți Sursa

调用阿里云短信是每个参数长度限制为20

huZhiHao 5 ani în urmă
părinte
comite
df10620eba

+ 19 - 3
src/main/java/platform/common/util/AlibabaSMSUtil.java

@@ -17,6 +17,7 @@ import java.io.IOException;
 import java.text.SimpleDateFormat;
 import java.util.Date;
 import java.util.HashMap;
+import java.util.Iterator;
 import java.util.Map;
 import java.util.concurrent.ConcurrentSkipListMap;
 
@@ -108,7 +109,20 @@ public class AlibabaSMSUtil {
         //必填:短信模板-可在短信控制台中找到
         sendRequest.setTemplateCode(templateCode);
         //可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${submittime}"时,此处的值为
-        sendRequest.setTemplateParam(templateParam);
+
+        JSONObject jsonObject = JSONObject.parseObject(templateParam);
+        //限制长度为20
+        Map<String, String> params = new HashMap<>();
+        Iterator<String> iterator = jsonObject.keySet().iterator();//使用迭代器
+        while (iterator.hasNext()) {
+            String key = iterator.next();//获取key
+            String value = jsonObject.getString(key);//获取value
+            if (value != null && value != "" && value.length() > 20) {
+                value = value.substring(0, 17) + "...";
+            }
+            params.put(key, value);
+        }
+        sendRequest.setTemplateParam(JSONObject.toJSONString(params));
 
         //选填-上行短信扩展码(无特殊需求用户请忽略此字段)
         //request.setSmsUpExtendCode("90997");
@@ -116,11 +130,13 @@ public class AlibabaSMSUtil {
         //可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者
         sendRequest.setOutId("yourOutId");
 
+        String s = sendRequest.getTemplateParam();
+
         //hint 此处可能会抛出异常,注意catch
         SendSmsResponse sendSmsResponse = acsClient.getAcsResponse(sendRequest);
 
         //todo  输出发送记录到附件目录根目录下
-        smsLog(sendRequest,sendSmsResponse);
+        smsLog(sendRequest, sendSmsResponse);
 
         return sendSmsResponse;
     }
@@ -197,7 +213,7 @@ public class AlibabaSMSUtil {
 
     }
 
-    public static void smsLog(SendSmsRequest sendRequest,SendSmsResponse sendSmsResponse) {
+    public static void smsLog(SendSmsRequest sendRequest, SendSmsResponse sendSmsResponse) {
 
         String path = repositoryPath + File.separator + "smsLog" + File.separator + "log.txt";
         String content = "  request>>>";

+ 1 - 1
src/test/java/com/Message.java

@@ -27,7 +27,7 @@ public class Message {
     public static void main(String[] args) throws IOException {
         Map<String, String> params = new HashMap<>();
         params.put("no", "zzz111");
-        params.put("title", "产业供地标题");
+        params.put("title", "产业供地标题111111111111111111111111111111111111111111111111111111111111");
         String templateCode = Constant.SMS_TemplateCode.INDUSTRIAL_LAND_SUPPLY;
         try {
             AlibabaSMSUtil.sendSMSMessage(