java发送短信功能工具类及思路详解

时间:2021-10-06 08:57:37

//发送短信功能的思路 下面则是工具类
异常返回0 发送短信失败可以result==0进行判断 则 返回失败信息
如果成功 则返回验证码信息 可以存session
并设置session时间 session.setMaxInactiveInterval(60*5);
设置session时间 后期验证可以获取session 如果session为空
则验证码已经过期 否则等于session则设置session为空 并返回成功

package com.kero99.ygc.sms;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
import org.dom4j.Document;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;
/**
* 接口类型:互亿无线触发短信接口,支持发送验证码短信、订单通知短信等。
* 账户注册:请通过该地址开通账户http://sms.ihuyi.com/register.html
* 注意事项:
* (1)调试期间,请用默认的模板进行测试,默认模板详见接口文档;
* (2)请使用APIID(查看APIID请登录用户中心->验证码、通知短信->帐户及签名设置->APIID)及 APIkey来调用接口,APIkey在会员中心可以获取;
* (3)该代码仅供接入互亿无线短信接口参考使用,客户可根据实际需要自行编写;
*/

public class SendUtils {
private static String Url = "http://106.ihuyi.cn/webservice/sms.php?method=Submit";
public static int sendSms(String phone){

HttpClient client = new HttpClient();
PostMethod method = new PostMethod(Url);

client.getParams().setContentCharset("GBK");
method.setRequestHeader("ContentType","application/x-www-form-urlencoded;charset=GBK");

int mobile_code = (int)((Math.random()*9+1)*100000);

String content = new String("您的验证码是:" + mobile_code + "。请不要把验证码泄露给其他人。");

NameValuePair[] data = {//提交短信
new NameValuePair("account", "C72562***"), //查看用户名请登录用户中心->验证码、通知短信->帐户及签名设置->APIID
new NameValuePair("password", "ad95c26915ec51bd68d87a72***"), //查看密码请登录用户中心->验证码、通知短信->帐户及签名设置->APIKEY
//new NameValuePair("password", util.StringUtil.MD5Encode("密码")),
new NameValuePair("mobile", phone), //手机号码
new NameValuePair("content", content), //内容
};
method.setRequestBody(data);

try {
client.executeMethod(method);

String SubmitResult =method.getResponseBodyAsString();

System.out.println(SubmitResult);

Document doc = DocumentHelper.parseText(SubmitResult);
Element root = doc.getRootElement();

String code = root.elementText("code");
String msg = root.elementText("msg");
String smsid = root.elementText("smsid");

System.out.println(code);
System.out.println(msg);
System.out.println(smsid);

if("2".equals(code)){
System.out.println("短信提交成功");
return mobile_code;
}else return 0;

} catch (Exception e) {
e.printStackTrace();
return 0;
}
}
//测试
public static void main(String[] args) {
sendSms("13521******");
}
}