package com.xnx3.net; import java.io.UnsupportedEncodingException; import com.xnx3.ConfigManagerUtil; import com.xnx3.Lang; import com.xnx3.MD5Util; /** * 发送手机短信 * <br/><b>需配置src下的systemConfig.xml文件的sms节点</b> * <br/>使用: * <pre> * SMSUtil.send("17076012262", "这里是发送信息的内容") * </pre> * 发送短信若失败,会继续执行发送。连续发送三次,若都失败,返回失败原因。 * <br/><b/>需</b> * <br/><i>commons-configuration-1.7.jar</i> * <br/><i>commons-collections-3.2.1.jar</i> * <br/><i>commons-io-1.3.2.jar</i> * <br/><i>commons-lang-2.5.jar</i> * <br/><i>commons-logging-1.2.jar</i> * <br/>短信平台开通联系QQ:921153866 * @author 管雷鸣 * */ public class SMSUtil { private static String uid="80..."; //用户ID private static String requestIp = "210.5.158.31"; //api请求的ip地址 private static String passwordMd5; //MD5加密后的代码+密码 static{ uid = ConfigManagerUtil.getSingleton("xnx3Config.xml").getValue("sms.uid"); String companyCode = ConfigManagerUtil.getSingleton("xnx3Config.xml").getValue("sms.companyCode"); String password = ConfigManagerUtil.getSingleton("xnx3Config.xml").getValue("sms.password"); passwordMd5 = MD5Util.MD5(companyCode+password); requestIp = ConfigManagerUtil.getSingleton("xnx3Config.xml").getValue("sms.requestIp"); } public static void main(String[] args) { System.out.println(SMSUtil.send("17076012262", "testa")); } /** * 发送短信 * @param phone 发送到的手机号 * @param content 发送内容,编码为UTF-8编码,70个文字以内,超过70个字会发送多条信息 * @return String <li>返回空字符null,为发送成功 * <li>返回字符串,非null,则发送失败,返回出错信息 */ public static String send(String phone,String content){ String result=null; if(passwordMd5 == null){ System.out.println("请先执行 SMSUtil.setUserPassword(); 设置账号密码"); return "请先执行 SMSUtil.setUserPassword(); 设置账号密码"; } try { content=java.net.URLEncoder.encode(content, "utf-8"); } catch (UnsupportedEncodingException e) { e.printStackTrace(); } com.xnx3.net.HttpUtil httpUtil=new com.xnx3.net.HttpUtil(); String url="http://"+requestIp+":9011/hy?uid="+uid+"&auth="+passwordMd5+"&mobile="+phone+"&msg="+content+"&encode=utf-8&expid=0"; String requestResult=httpUtil.get(url).getContent(); if(requestResult!=null&&requestResult.split(",")[0].equals("0")){ result=null; }else{ //send failure if(requestResult.indexOf("-")>0){ int state=Lang.stringToInt(requestResult, 0); switch (state) { case 0: result=requestResult; break; case -1: result="签权失败"; break; case -2: result="未检索到被叫号码"; break; case -3: result="被叫号码过多"; break; case -4: result="内容未签名"; break; case -5: result="内容过长"; break; case -6: result="余额不足"; break; case -7: result="暂停发送"; break; case -8: result="保留"; break; case -9: result="定时发送时间格式错误"; break; case -10: result="下发内容为空"; break; case -11: result="账户无效"; break; case -12: result="Ip地址非法"; break; case -13: result="操作频率快"; break; case -14: result="'操作失败"; break; case -15: result="拓展码无效(1-999)"; break; default: result="未知错误"; break; } }else{ result=requestResult; } } httpUtil=null; return result; } }