SmsUtils 发送短信

  1 import java.io.InputStream;
  2 import java.io.OutputStream;
  3 import java.io.OutputStreamWriter;
  4 import java.net.URL;
  5 import java.net.URLConnection;
  6 import javax.xml.parsers.DocumentBuilder;
  7 import javax.xml.parsers.DocumentBuilderFactory;
  8 import org.w3c.dom.Document;
  9 import org.w3c.dom.Node;
 10 import org.w3c.dom.NodeList;
 11 
 12 /**
 13  * 调用吉信通 发短信工具类
 14  */
 15 public class SmsUtils {
 16     /**
 17      * 调用 WebService 协议方式发送短信
 18      * 
 19      * @param mobiles
 20      * @param msg
 21      * @return
 22      */
 23     public static String sendSmsByWebService(String mobiles, String msg) {
 24         String result = "-12";
 25         try {
 26             Document doc;
 27             DocumentBuilderFactory dbf = DocumentBuilderFactory.newInstance();
 28             dbf.setNamespaceAware(true);
 29             DocumentBuilder db = dbf.newDocumentBuilder();
 30             
 31             String macAddress = MacUtil.MAC.getMacAddress();
 32             String macEnc = MD5Utils.md5(macAddress);
 33             String num1 = macEnc.substring(4,5);
 34             String num2 = macEnc.substring(27,28);
 35             int num3 = Integer.valueOf(num1) + Integer.valueOf(num2);
 36             String usernameF = macEnc.substring(0, num3);
 37             String passwordF = macEnc.substring(num3, macEnc.length());
 38             
 39             DESUtil desUtil = new DESUtil();
 40             
 41             String username = desUtil.decrypt(userid.replaceAll(usernameF, ""));
 42             
 43             String password = desUtil.decrypt(pass.replaceAll(passwordF, ""));
 44             
 45             InputStream is = getSoapInputStream(username, password, mobiles, msg, "");
 46             if (is != null) {
 47                 doc = db.parse(is);
 48                 NodeList nl = doc.getElementsByTagName("SendMessagesResult");
 49                 Node n = nl.item(0);
 50                 result = n.getFirstChild().getNodeValue();
 51                 is.close();
 52             }
 53             return result;
 54         } catch (Exception e) {
 55             System.out.print("SmsSoap.sendSms error:" + e.getMessage());
 56             return "-12";
 57         }
 58     }
 59 
 60     private static String getSoapSmssend(String userid, String pass,
 61             String mobiles, String msg, String time) {
 62         try {
 63             String soap = "";
 64             soap = "<?xml version="1.0" encoding="utf-8"?>"
 65                     + "<soap:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/">"
 66                     + "<soap:Body>"
 67                     + "<SendMessages xmlns="http://tempuri.org/">" + "<uid>"
 68                     + userid + "</uid>" + "<pwd>" + pass + "</pwd>" + "<tos>"
 69                     + mobiles + "</tos>" + "<msg>" + msg + "</msg>" + "<otime>"
 70                     + time + "</otime>" + "</SendMessages>" + "</soap:Body>"
 71                     + "</soap:Envelope>";
 72             return soap;
 73         } catch (Exception ex) {
 74             ex.printStackTrace();
 75             return null;
 76         }
 77     }
 78 
 79     private static InputStream getSoapInputStream(String userid, String pass,
 80             String mobiles, String msg, String time) throws Exception {
 81         URLConnection conn = null;
 82         InputStream is = null;
 83         try {
 84             String soap = getSoapSmssend(userid, pass, mobiles, msg, time);
 85             if (soap == null) {
 86                 return null;
 87             }
 88             try {
 89 
 90                 URL url = new URL("http://service2.winic.org:8003/Service.asmx");
 91 
 92                 conn = url.openConnection();
 93                 conn.setUseCaches(false);
 94                 conn.setDoInput(true);
 95                 conn.setDoOutput(true);
 96                 conn.setRequestProperty("Content-Length",
 97                         Integer.toString(soap.length()));
 98                 conn.setRequestProperty("Content-Type",
 99                         "text/xml; charset=utf-8");
100                 conn.setRequestProperty("HOST", "service2.winic.org");
101                 conn.setRequestProperty("SOAPAction",
102                         ""http://tempuri.org/SendMessages"");
103 
104                 OutputStream os = conn.getOutputStream();
105                 OutputStreamWriter osw = new OutputStreamWriter(os, "utf-8");
106                 osw.write(soap);
107                 osw.flush();
108             } catch (Exception ex) {
109                 System.out.print("SmsSoap.openUrl error:" + ex.getMessage());
110             }
111             try {
112                 is = conn.getInputStream();
113             } catch (Exception ex1) {
114                 System.out.print("SmsSoap.getUrl error:" + ex1.getMessage());
115             }
116 
117             return is;
118         } catch (Exception e) {
119             System.out.print("SmsSoap.InputStream error:" + e.getMessage());
120             return null;
121         }
122     }
123     private static String userid = "7d39bcb411cc4726b004051c3970022";
124     private static String pass = "2da0c4b48817eda12e07c2eaf87c24cdcbaff0b22958aeb28";
125 }
原文地址:https://www.cnblogs.com/zlw-xf/p/7989833.html