最近几天有机会到了一家科技公司,和里面的项目经理聊了一下后端技术,他对我的讲了一下需要会的一些基本技术,其中提到了验证短信发送,今天我就刚学习了验证短信发送信息,主要运用互亿无线短信平台进行发送,直入主题。
项目已经上传GitHub:SMS
互亿无线短信平台
互亿无线平台支持多开发语言互亿无线短信平台,还是按照之前的惯例,文档上官网查看,Blog中我们主要将平台的运用,新注册用户可以有免费的50
条短信
依赖
1.dom4j
主要运用于解析xml
2.httpclient
主要运用于发送http
请求
3.commons-codec
是Apache开源组织提供的用于摘要运算、编码的包。在该包中主要分为四类加密:BinaryEncoders、DigestEncoders、LanguageEncoders、NetworkEncoders
4.commons-logging
是Apache commons类库中的一员。Apache commons类库是一个通用的类库,提供了基础的功能,比如说commons-fileupload,commons-httpclient,commons-io,commons-codes
SMS工具类编写
package com.yangzinan.sms;
import java.io.IOException;
import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
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;
import org.omg.CORBA.NamedValue;
public class SMSUtil {
/*
* @param url 请求地址
* @param content 短信内容
* @param account 从互亿后台获取
* @param password 从互亿后台获取
* @param mobile 手机号
*/
public static void send(String url,String content,String account,String password,String mobile) throws Exception {
/*
* 实例话对象
*/
HttpClient client = new HttpClient();
PostMethod method = new PostMethod(url);
/*
* 设置内容编码
*/
method.getParams().setContentCharset("GBK");
/*
* 设置请求头
*/
method.setRequestHeader("ContentType","application/x-www-form-urlencoded;charset=GBK");
/*
* 发送配置信息
*/
NameValuePair[] info = {
new NameValuePair("account", account),
new NameValuePair("password", password),
new NameValuePair("mobile",mobile),
new NameValuePair("content",content),
};
/*
* 设置请求内容
*/
method.setRequestBody(info);
/*
* 执行短信发送
*/
client.executeMethod(method);
/*
* 接受返回值
*/
String result_info = method.getResponseBodyAsString();
/*
* 解析xml
*/
Document doc = DocumentHelper.parseText(result_info);
Element ele = doc.getRootElement();
String code = ele.elementText("code");
String msg = ele.elementText("msg");
String smsid = ele.elementText("smsid");
System.out.println("code:"+code);
System.out.println("msg:"+msg);
System.out.println("smsid:"+smsid);
}
}
url
短信发送服务器地址account、password
都需要从互亿无线管理后台中获取mobile
为接收短信的手机号
⚠️注意:由于需要自定义短信模版需要认证,所以短信模版必须为您的验证码是:「变量」。请不要把验证码泄露给其他人。
才可以发送成功
package com.yangzinan.sms;
public class SendSMS {
public static void main(String[] args) throws Exception {
String URL="http://106.ihuyi.com/webservice/sms.php?method=Submit";
String account="*******";
String password="*****************";
String mobile="********";
int code = (int)((Math.random()*9+1)*100000);
StringBuilder content = new StringBuilder();
content.append("您的验证码是:");
content.append(code);
content.append("。请不要把验证码泄露给其他人。");
SMSUtil.send(URL, content.toString(), account, password, mobile);
}
}
结果
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。