1、短信平台 --莫名短信
html
该平台能够加后缀和本身定义发送内容,用户接收到的短信示例以下:mysql
123456【圈圈科技】
web
2、webservice核心代码spring
这个是springMVC框架下的实现层代码,注释都在里面
sql
@Service public class SendPhoneMessageServiceImpl implements SendPhoneMessageService{ @Autowired private MessageMapper messageMapper; /** * 发送短信 * * @param iCode * 验证码 * @param phoneNumber * 手机号码 * @param content * 验证内容(手机号码&验证码) * * @return 操做结果 */ public ResultObject sendSMS(SMSParams message) { ResultObject resultObject = new ResultObject(); resultObject.setResultCode(ResultCode.FAILED); //手机号码有效性判断 if(!isMobile(message.getPhoneNumber())){ resultObject.setResultMsg(ResultMsg.MSG_CHECKPHONE_FAILED); return resultObject; } //验证 发送码,前台将 手机号码&验证码 的字符串发送过来 //后台也用 手机号码&字符串,这个是调用mysql的md5方法 //比较不相等,则说明验证失败 String checkStr = message.getPhoneNumber() + "&" + message.getiCode(); //调用一次数据库进行md5加密 //下面调用数据库实际执行的操做是 select md5(Str); String md5Data = sMSInfoMapper.getMD5Data(checkStr); if(!md5Data.equals(message.getSign())) { //验证失败 resultObject.setResultMsg(ResultMsg.MSG_CHECKCODE_FAILED); return resultObject; } //获取发送短信所需参数 // 帐号 String smsAccount = ""; // 密码 String smsPwd = ""; // 接口地址 String smsURL = ""; // 发送内容 String smsContent = ""; //从数据库取发送短信的帐号、密码、接口地址和发送内容 SMSInfo messageInfo = messageMapper.getSMSInfo(); if(messageInfo != null) { //赋值 smsAccount = messageInfo.getSmsAccount(); smsPwd = messageInfo.getSmsPwd(); smsURL = messageInfo.getSmsUrl(); smsContent = messageInfo.getSmsContent(); //发送内容 //若是取到的内容不为空,则用验证码代替取到的内容中的"CODE"字符串 //取到的内容应该是: 您注册xx公司的验证码为{CODE} if(!smsContent.isEmpty()){ smsContent = smsContent.replace("{CODE}", message.getiCode()); }else{ smsContent = message.getiCode(); } //发送内容、地址不为空的状况 if(!smsAccount.isEmpty() && !smsURL.isEmpty() && smsURL.indexOf("{ACCOUNT}") != -1) { try{ smsContent = URLEncoder.encode(smsContent,"UTF-8"); }catch (UnsupportedEncodingException e) { e.printStackTrace(); } //用取到的数据代替设置的 smsURL = smsURL.replace("{ACCOUNT}", smsAccount) .replace("{PWD}", smsPwd) .replace("{PHONE}", message.getPhoneNumber()) .replace("{MESSAGE}",smsContent); }else { //没有取到地址时给个默认的 smsURL = "http://api.duanxin.cm/?action=send&encode=utf8&username=70208843&password=6d85231f4343aab761c24c550fd8263d&phone="+message.getPhoneNumber()+"&content="+smsContent; } // 发送短息 System.out.println(smsURL); String retValue = requestURL(smsURL,"UTF-8"); if(retValue.equals("100")){ //发送成功 resultObject.setResultCode(ResultCode.SUCCESS); resultObject.setResultMsg(ResultMsg.MSG_SEND_SUCCESS); }else{ resultObject.setResultMsg(ResultMsg.MSG_GETSMSINFO_FAILED); } }else { resultObject.setResultMsg(ResultMsg.MSG_GETSMSINFO_FAILED); } return resultObject; } /** * 手机号验证 * * @param str * @return 验证经过返回true */ public static boolean isMobile(String str) { Pattern p = null; Matcher m = null; boolean b = false; // 验证手机号 p = Pattern.compile("^[1][3,4,5,7,8][0-9]{9}$"); m = p.matcher(str); b = m.matches(); return b; } /** * 网络请求 * * @param String str 请求的网页地址 * @param String charSet 编码格式 * @return String 网页返回值 */ private String requestURL(String URLStr, String charSet){ // 网络的url地址 URL url = null; // 输入流 BufferedReader in = null; StringBuffer sb = new StringBuffer(); try{ url = new URL(URLStr); in = new BufferedReader( new InputStreamReader(url.openStream(),charSet) ); String str = null; while((str = in.readLine()) != null) { sb.append(str); } } catch (Exception ex) { ex.printStackTrace(); System.out.println(ex.getMessage()); } finally{ try{ if(in!=null) { in.close(); } }catch(Exception ex) { } } String result = sb.toString(); System.out.println(result); return result; }