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 }