linwe
2024-09-03 764d883b5ea3bdc06abbec548b6df0511e567978
src/main/java/org/springblade/common/utils/SmsUtils.java
New file
@@ -0,0 +1,127 @@
package org.springblade.common.utils;
import liquibase.repackaged.org.apache.commons.lang3.text.StrSubstitutor;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.HttpURLConnection;
import java.net.URL;
import java.util.HashMap;
import java.util.Map;
public class SmsUtils {
   private static Logger logger = LoggerFactory.getLogger(SmsUtils.class);
   public static String buildRequestXMLString(String id, String pwd, String serviceid, String phone, String content) {
      StringBuffer sb = new StringBuffer();
      sb.append("<?xml version=\"1.0\" encoding=\"UTF-8\"?>")
         .append("<svc_init ver=\"2.0.0\">")
         .append("<sms ver=\"2.0.0\">")
         .append("<client>")
         .append("<id>").append(id).append("</id>")
         .append("<pwd>").append(pwd).append("</pwd>")
         .append("<serviceid>").append(serviceid).append("</serviceid>")
         .append("</client>")
         .append("<sms_info>")
         .append("<phone>").append(phone).append("</phone>")
         .append("<content>").append(content).append("</content>")
         .append("</sms_info>")
         .append("</sms>")
         .append(" </svc_init>");
      logger.info("buildRequestXMLString:" + sb.toString());
      return sb.toString();
   }
   public static String postXMLSendSMSRequest(String servletUrl, String content) {
      String result = null;
      BufferedReader br = null;
      OutputStreamWriter out = null;
      HttpURLConnection con = null;
      try {
         URL url = new URL(servletUrl);
         con = (HttpURLConnection) url.openConnection();
         con.setDoOutput(true);
         con.setRequestMethod("POST");
         out = new OutputStreamWriter(con.getOutputStream(), "UTF-8");
         out.write(content);
         out.flush();
         br = new BufferedReader(new InputStreamReader(con.getInputStream(), "UTF-8"));
         String line = null;
         StringBuilder sb = new StringBuilder();
         while ((line = br.readLine()) != null) {
            sb.append(line);
         }
         result = sb.toString();
         System.out.println(result);
         logger.info("postXMLSendSMSRequest:" + result);
      } catch (IOException e) {
         e.printStackTrace();
      } finally {
         if (br != null) {
            try {
               br.close();
            } catch (IOException e) {
               e.printStackTrace();
            }
         }
         if (out != null) {
            try {
               out.close();
            } catch (IOException e) {
               e.printStackTrace();
            }
         }
         if (con != null) {
            con.disconnect();
            con = null;
         }
      }
      return result;
   }
   public static void send(String phone, Map<String, String> content) {
      StrSubstitutor strSubstitutor = new StrSubstitutor(content);
      String url3 = "【上饶基层自治】您正在验证投票操作,验证码:${code}。如非本人操作,则密码可能已泄露,建议立即修改密码或联系客服。";
      String context3 = strSubstitutor.replace(url3);
      String MAS_ID = "182";
      String PASSWORD = "bYcLgYwXOZspDzEnaGsNHAGUykKEiexknHY9H98xVTQ8Zbeya8bexQ==";
      String reqXML = buildRequestXMLString(MAS_ID, PASSWORD, "", phone, context3);
      postXMLSendSMSRequest("http://218.204.110.232:8080/emc/HttpSendSMSService", reqXML);
   }
   /**
    * @param args
    */
   public static void main(String[] args) {
      //下面的MAS_ID、PASSWORD仅供测试使用,正式使用由移动公司分配
      String MAS_ID = "182";
      String PASSWORD = "bYcLgYwXOZspDzEnaGsNHAGUykKEiexknHY9H98xVTQ8Zbeya8bexQ==";
      String reqXML = buildRequestXMLString(MAS_ID, PASSWORD, "", "18720768376", "测试短信");
      postXMLSendSMSRequest("http://218.204.110.232:8080/emc/HttpSendSMSService", reqXML);
   }
}