zoukankan      html  css  js  c++  java
  • 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 }
  • 相关阅读:
    剑指Offer-11.二进制中1的个数(C++/Java)
    剑指Offer-10.矩形覆盖(C++/Java)
    剑指Offer-9.变态跳台阶(C++/Java)
    UVA 1608 Non-boring sequence 不无聊的序列(分治,中途相遇)
    UVA1607 Gates 与非门电路 (二分)
    UVA 1451 Average平均值 (数形结合,斜率优化)
    UVA 1471 Defense Lines 防线 (LIS变形)
    UVA 1606 Amphiphilic Carbon Molecules 两亲性分子 (极角排序或叉积,扫描法)
    UVA 11134 FabledRooks 传说中的车 (问题分解)
    UVA 1152 4 Values Whose Sum is Zero 和为0的4个值 (中途相遇)
  • 原文地址:https://www.cnblogs.com/zlw-xf/p/7989833.html
Copyright © 2011-2022 走看看