现在是什么软件和平台登录都需要绑定手机号码,然后通过的短信验证码进行验证手机号,那么软件平台是如何Java程序进行短信验证码自动触发发送的呢?今天给大家分享的是Java实现短信验证码发送功能。
实现Java验证码发送的第一步:选取可以使用的短信平台
这种平台的好处是可以测试,如果短信平台的短信通道特别慢,可以直接换其他平台,避免平台不行造成的返工。
有的平台是支持接口测试,但是有的平台不行,可以直接测试就直接测试吧,不能测试的平台可找平台客服要接口文档测试。
我选取的这家短信平台需要查看appid和appkey,每家的平台都不太一样,不知道就直接找对应客服就对了。
一般测试的时候,带的签名都是短信平台自身预设的签名,但是测试是够了,正式使用还需要更改,不然发送的短信验证码所带的签名都是短信平台。
以post方式提交 ,接口地址:
https://vip.veesing.com/smsApi/verifyCode
以下是这个平台需要上传的资料
appid提交账户
appkey提交账户密码
phone 接收号码,只能提交1个号码
templateId 平台申请的验证码模板id
variables 生成的验证码变量
示例代码
package com.veesing.test;
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 com.alibaba.fastjson.JSONObject;
import com.veesing.utils.Config;
/**
* 短信验证码
* @author MWH
*
*/
public class SmsCodeTest {
public static void main(String[] args) {
// 获取连接
HttpClient client = new HttpClient();
// 短信验证码API接口地址
PostMethod method = new PostMethod("https://vip.veesing.com/smsApi/verifyCode");
// 设置编码
client.getParams().setContentCharset("UTF-8");
method.setRequestHeader("ContentType", "application/x-www-form-urlencoded;charset=utf-8");
// 手机号码,一次只能提交一个手机号码
String phone = "15080929435";
//模板ID(如没有模板ID请先在平台上新增并提交验证码模板,审核通过即可使用)
String templateId = "36";
// 验证码变量(随机数)
Integer num = (int)((Math.random()*9+1)*1000);
String variables = num.toString();
System.out.println("验证码是:"+variables);
// 拼接参数
NameValuePair[] data = {
new NameValuePair("appId", appid),
new NameValuePair("appKey", appkey),
new NameValuePair("phone", phone),
new NameValuePair("templateId", templateId),
new NameValuePair("variables", variables) };
method.setRequestBody(data);
try {
client.executeMethod(method);
String result = method.getResponseBodyAsString();
// 返回结果
System.out.println(result);
JSONObject jsonObject = JSONObject.parseObject(result);
// 返回2000则发送成功(逻辑操作请根据接口文档返回参数自行判断)
if (jsonObject.get("returnStatus").equals("2000")) {
System.out.println("成功!");
} else {
System.out.println("失败!");
}
// 释放连接
method.setRequestHeader("Connection", "close");
method.releaseConnection();
} catch (HttpException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
}
}
这样就OK了,测试完毕,万事大吉,收工回家。