首页 > 技术文章 > java或者C#发送短信

xcswswswws 2016-03-09 15:09 原文

之前做餐饮的项目,要求结完帐或者充值的时候给手机端推送一条会员的短信,

只要调用下面代码中的sendSms方法就好了,

需注意的是:1.您需要找到短信的供应商得到用户名和密码

  sendStr.append("username=").append("xxxxxx");
  sendStr.append("&password=").append("xxxxx");
  2.需要短信供应商提供给你服务器的端口(IP)

String serviceURL = "http://IP:8030/service/httpService/httpInterface.do?method=sendMsg";

  1 package com.hqzn.services.common.impl;
  2 
  3 import org.apache.commons.logging.Log;
  4 import org.apache.commons.logging.LogFactory;
  5 import org.springframework.stereotype.Service;
  6 import java.io.BufferedReader;
  7 import java.io.InputStreamReader;
  8 import java.io.OutputStream;
  9 import java.net.HttpURLConnection;
 10 import java.net.URL;
 11 import java.net.URLDecoder;
 12 import java.util.List;
 13 import java.util.regex.Matcher;
 14 import java.util.regex.Pattern;
 15 import com.hqzn.services.common.interfaces.ISendMessageSV;
 16 
 17 @Service("ISendMessageSV")
 18 public class SendMessageSVImpl implements ISendMessageSV {
 19     private Log log=LogFactory.getLog(SendMessageSVImpl.class);
 20     
 21     public static String connectURL(String commString,String sendsmsaddress) {
 22         String rec_string = "";
 23         URL url = null;
 24         HttpURLConnection urlConn = null;
 25         try {
 26             url = new URL(sendsmsaddress);  //根据数据的发送地址构建URL
 27             urlConn = (HttpURLConnection) url.openConnection(); //打开链接
 28             urlConn.setConnectTimeout(30000); //链接超时设置为30秒
 29             urlConn.setReadTimeout(30000);    //读取超时设置30秒
 30             urlConn.setRequestMethod("POST");    //链接相应方式为post
 31             urlConn.setDoOutput(true);
 32             urlConn.setDoInput(true);
 33             
 34             OutputStream out = urlConn.getOutputStream();
 35             out.write(commString.getBytes("UTF-8"));
 36             out.flush();
 37             out.close();
 38             
 39             BufferedReader rd = new BufferedReader(new InputStreamReader(urlConn.getInputStream(), "UTF-8"));
 40             StringBuffer sb = new StringBuffer();
 41             int ch;
 42             while ((ch = rd.read()) > -1) {
 43                 sb.append((char) ch);
 44             }
 45             
 46             rec_string = sb.toString().trim();
 47             rec_string = URLDecoder.decode(rec_string,"UTF-8");
 48             
 49             rd.close();
 50         } catch (Exception e) {
 51             rec_string = "-107";
 52         } finally {
 53             if (urlConn != null) {
 54                 urlConn.disconnect();
 55             }
 56         }
 57 
 58         return rec_string;
 59     }
 60     
 61     @Override
 62     public String sendSms(String mobile,List<String> lstParams,String template) {
 63         String resultok = "";
 64         try {
 65             String res = "";
 66             String content="";
 67             StringBuilder sendStr=new StringBuilder();
 68             sendStr.append("username=").append("xxxxxx");
 69             sendStr.append("&password=").append("xxxxx");
 70             sendStr.append("&veryCode=").append("p2wmnbqk9cd2");
 71             sendStr.append("&mobile=").append(mobile);
 72             for (int i = 0; i < lstParams.size(); i++) {
 73                 content+=",@"+String.valueOf(i+1)+"@="+lstParams.get(i);
 74             }
 75             if(!content.equals("")){
 76                 content=content.substring(1,content.length());
 77             }
 78             sendStr.append("&content=").append(content);
 79             sendStr.append("&msgtype=").append("2");
 80             sendStr.append("&code=").append("utf-8");
 81             sendStr.append("&tempid=").append(template);
 82             String serviceURL = "http://IP:8030/service/httpService/httpInterface.do?method=sendMsg"; 
 83             try {
 84                 //String commString ="Sn="+username+"&Pwd="+password+"&mobile="+mobile+"&content="+URLEncoder.encode(content,"UTF-8");
 85                 res = connectURL(sendStr.toString().trim(),serviceURL);
 86             } catch (Exception e) {
 87                 return "-10000";
 88             }
 89             //设置返回值  解析返回值
 90             //正则表达式
 91                 Pattern pattern = Pattern.compile("<int xmlns=\"http://tempuri.org/\">(.*)</int>");
 92                 Matcher matcher = pattern.matcher(res);
 93                 while (matcher.find()) {
 94                     resultok = matcher.group(1);
 95                 }
 96         } catch (Exception e) {
 97             log.error(e.getMessage());
 98         }
 99         return resultok;
100     }
101     
102     
103 }

 

推荐阅读