Demo下载
实用短信接口公司的接口
以“秒滴”营销短信群发平台_智能5G短信_短信语音验证码_106短信接口-秒嘀科技接口公司为例
1注册账号
2获取一下两个信息
3创建短信模板
创建为审核通过后模板为:
【柴火科技】您的验证码为{1},请于2分钟内正确输入,如非本人操作,请忽略此短信。
等价于:
【柴火科技】您的验证码为" + randNum + ",请于2分钟内正确输入,如非本人操作,请忽略此短信。
创建项目Maven(非web项目)项目
pom.xml
<dependency> <groupId>commons-codec</groupId> <artifactId>commons-codec</artifactId> <version>1.10</version> </dependency>
工具类
package com.imooc.util; import java.util.Random; public class RandNum { /** * @生成一个6位的随机码 */ public static String createRandNum() { Random random = new Random(); StringBuffer sb = new StringBuffer(); for(int i = 0; i <= 5; i++) { String s = random.nextInt(10) + ""; sb.append(s); } return sb.toString(); } }
工具类
注意:
(1)public static final String AUTH_TOKEN = 图一上面的信息;
(2)public static final String ACCOUNT_SID = 图一上面的信息;
(3)sendMegTo方法中的变量 要和 图二图三匹配,否则会报错,就是拼接字符串
String smsContent = "【柴火科技】您的验证码为" + randNum + ",请于2分钟内正确输入,如非本人操作,请忽略此短信。";
(4)剩下的不需要改动
package com.imooc.util; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.URL; import java.net.URLConnection; import java.text.SimpleDateFormat; import java.util.Date; import java.util.Random; import org.apache.commons.codec.digest.DigestUtils; public class SendTelMsgUtils { //http://www.miaodiyun.com/ /** * ACCOUNT_SID:开发者主账号ID(注册后自动生成) */ public static final String ACCOUNT_SID = "填写ACCOUNT SID"; /** * AUTH_TOKEN:开发者账号认证密匙(注册后自动生成) */ public static final String AUTH_TOKEN = "填写AUTH TOKEN"; /** * BASE_URL:请求地址 */ public static final String BASE_URL = "https://api.miaodiyun.com/20150822/industrySMS/sendSMS"; /** * RESP_DATA_TYPE:数据返回格式为JSON格式 */ public static final String RESP_DATA_TYPE = "json"; /** * * @Title:sendMsgTo * @Description:发送短信验证码 @param: * @return:String */ public static String sendMsgTo(String to, String createRandNum) { /** * randNum:生成的验证码随机数 */ String randNum = createRandNum; /** * smsContent:短信内容(短信签名+短信内容,注意要和配置的模板一致,否则报错) */ String smsContent = "【柴火科技】您的验证码为" + randNum + ",请于2分钟内正确输入,如非本人操作,请忽略此短信。"; /** * 获取时间戳 */ String timestamp = getTimestamp(); /** * 获取签名 */ String sig = sig_MD5(ACCOUNT_SID + AUTH_TOKEN + timestamp); /** * 要提交的post数据 */ String http_post = "accountSid=" + ACCOUNT_SID + "&smsContent=" + smsContent + "&to=" + to + "×tamp=" + timestamp + "&sig=" + sig + "&respDataType=" + RESP_DATA_TYPE; OutputStreamWriter osw = null; BufferedReader br = null; StringBuffer sb = new StringBuffer(); try { /** * 获取连接 */ URL url = new URL(BASE_URL); /** * 打开连接 */ URLConnection conn = url.openConnection(); /** * 设置连接参数 */ conn.setDoOutput(true); conn.setDoInput(true); conn.setConnectTimeout(5000); conn.setReadTimeout(20000); /** * 提交数据 */ osw = new OutputStreamWriter(conn.getOutputStream(), "UTF-8"); osw.write(http_post); osw.flush(); /** * 读取返回数据 */ br = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8")); String line = ""; while ((line = br.readLine()) != null) { sb.append(line); } } catch (Exception e) { e.printStackTrace(); } return sb.toString(); } /** * 获取时间戳 */ public static String getTimestamp() { SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss"); String date = sdf.format(new Date()); return date; } /** * 对"ACCOUNT_SID + AUTH_TOKEN + timestamp"进行MD5加密 * * <dependency> * <groupId>commons-codec</groupId> * <artifactId>commons-codec</artifactId> * <version>1.10</version> </dependency> * </dependencies> */ public static String sig_MD5(String str) { String sig_md5 = DigestUtils.md5Hex(str); return sig_md5; } }
测试方法
package com.imooc.test; import com.imooc.util.RandNum; import com.imooc.util.SendTelMsgUtils; public class Main { public static void main(String[] args) { // controller中随机创建一个randNum String randNum = RandNum.createRandNum(); System.out.println("验证码是:" + randNum); // randNum发送给手机号 String result = SendTelMsgUtils.sendMsgTo("17863961702", randNum); System.out.println(result); } }