spring boot + maven +秒嘀科技 实现发送短信功能
目录结构:
pom.xml:
<?xml version="1.0" encoding="UTF-8"?> <project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"><modelVersion>4.0.0</modelVersion><groupId>com.message</groupId><artifactId>sendMessage</artifactId><version>1.0-SNAPSHOT</version><packaging>jar</packaging><properties><project.build.sourceEncoding>UTF-8</project.build.sourceEncoding><maven.compiler.source>1.8</maven.compiler.source><maven.compiler.target>1.8</maven.compiler.target></properties><parent><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-parent</artifactId><version>1.5.9.RELEASE</version></parent><dependencies><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-web</artifactId></dependency><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.11</version><scope>test</scope></dependency><!-- https://mvnrepository.com/artifact/net.sf.json-lib/json-lib --> <dependency><groupId>net.sf.json-lib</groupId><artifactId>json-lib</artifactId><version>2.4</version><classifier>jdk15</classifier></dependency></dependencies><build><finalName>SMS</finalName><plugins><plugin><groupId>org.springframework.boot</groupId><artifactId>spring-boot-maven-plugin</artifactId></plugin></plugins></build> </project>
工具类:
package com.message.util;import java.util.Random;/** * 获取6位随机数 */ public class RandUtil {public static String getRandomNum(){Random random=new Random();String randomNum = random.nextInt(1000000) + "";if(randomNum.length()!=6){System.out.println("6位伪随机数:"+randomNum);return getRandomNum();}System.out.println("6位随机数:"+randomNum);return randomNum;}
}
package com.message.util;import java.security.MessageDigest; import java.security.NoSuchAlgorithmException; import java.text.SimpleDateFormat; import java.util.Date;public class SendNumUtil {/** * 获取时间戳工具 * * @return */ public static String getTimeStamp() {SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");Date date = new Date();String timeStamp = format.format(date);System.out.println("时间戳:"+timeStamp);return timeStamp;}/** * 发送验证码 * * @param ACCOUNT_SID * @param AUTH_TOKEN * @param smsContent * @param to * @return */ public static String queryArgs(String ACCOUNT_SID, String AUTH_TOKEN, String smsContent, String to) {String timeStamp = getTimeStamp();String sig=MD5(ACCOUNT_SID,AUTH_TOKEN,timeStamp);String str = "accountSid="+ACCOUNT_SID+"&smsContent="+smsContent+"&to="+to+"×tamp="+timeStamp+"&sig="+sig;System.out.println("参数:"+str);return str;} public static String MD5(String... args){ //动态参数 StringBuffer result = new StringBuffer();if (args == null || args.length == 0) {return "";} else {StringBuffer str = new StringBuffer();for (String string : args) {str.append(string);}System.out.println("加密前:\t"+str.toString());try {MessageDigest digest = MessageDigest.getInstance("MD5");byte[] bytes = digest.digest(str.toString().getBytes());for (byte b : bytes) {String hex = Integer.toHexString(b&0xff); //转化十六进制 if (hex.length() == 1) {result.append("0"+hex);}else{result.append(hex);}}} catch (NoSuchAlgorithmException e) {e.printStackTrace();}}System.out.println("加密后:\t"+result.toString());return result.toString();} }
package com.message.util;import net.sf.json.JSONObject;import java.io.*; import java.net.MalformedURLException; import java.net.URL; import java.net.URLConnection;public class GetSMS {/** * 用户ID */ public static final String ACCOUNT_SID = "837f0008f2134b3294d31bdeeab18d36";//这里填写你在平台里的ACOUNT_SID /** * 密钥 */ public static final String AUTH_TOKEN = "f88e930f0b594bd8b53bb9a4dea17418";/** * 请求地址前半部分 */ public static final String BASE_URL = "https://api.miaodiyun.com/20150822/industrySMS/sendSMS";//请求地址是固定的不用改 /** * 随机码 */ public static String randNum = RandUtil.getRandomNum();public static String smsContent = "【联营科技】您的验证码为" + randNum + ",请于" + 2 + "分钟内正确输入,如非本人操作,请忽略此短信。";/** * 获取验证码 * * @param to * @return */ public static String getmMssage(String to) {String args = SendNumUtil.queryArgs(ACCOUNT_SID, AUTH_TOKEN, smsContent, to);OutputStreamWriter out = null;InputStream in = null;BufferedReader br = null;StringBuffer sb = new StringBuffer();try {URL url = new URL(BASE_URL);URLConnection connection = url.openConnection();//打开连接 connection.setDoOutput(true);connection.setDoInput(true);connection.setConnectTimeout(5000); //设置链接超时 connection.setReadTimeout(10000); //设置读取超时 out = new OutputStreamWriter(connection.getOutputStream(),"utf-8");out.write(args);out.flush();//读取返回数据 br = new BufferedReader(new InputStreamReader(connection.getInputStream()));String line = "";while((line = br.readLine())!=null){sb.append(line);}} catch (MalformedURLException e) {e.printStackTrace();} catch (IOException e) {e.printStackTrace();}JSONObject jsonObject = JSONObject.fromObject(sb.toString());System.out.println(jsonObject);Object object = jsonObject.get("respCode");System.out.println("状态码:"+object+"验证码:"+randNum);System.out.println(!object.equals("00000"));return jsonObject.toString(); // if (!object.equals("00000")) { // return object.toString(); // }else{ // return "发送成功!"; // } }//测试功能 // public static void main(String[] args) { // String result = getmMssage("15039925857"); // System.out.println("验证码:"+randNum+"\t"+result); // } }
controller层:
package com.message.controller;import com.message.util.GetSMS; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController;@RestController public class SendMessage {@RequestMapping(value = "/hello")public String index(){return "hello!";}@RequestMapping(value = "/sms/{to}")public String sendSMS(@PathVariable String to){return GetSMS.getmMssage(to);} }
启动入口类:
package com.message;import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication;@SpringBootApplication public class Application {public static void main(String[] args) {SpringApplication.run(Application.class,args);} }
运行效果:
在浏览器输入:localhost:8080/sms/15039925857 (15039925857是接收的手机号!)
spring boot + maven +秒嘀科技 实现发送短信功能相关推荐
- java接入秒嘀API实现发送短信功能
①百度秒嘀 进入并注册 会赠送10元 大约200条 足够测试了 ②得到accountID和token ③找到API ' ⑤创建一个模板,你的内容只有和你的模板对应好了才会发送成功. ⑥写一个JAVA程 ...
- 2021最新短信验证码接收平台收费价格对比「二」:亿佰云、秒嘀科技、极光短信、华信云通信
" 亿佰云.秒嘀科技.极光短信.华信云通信这四家短信验证码平台都是怎么收费的,一条短信验证码价格多少钱,企业应当如何进行选择.今天评测下 亿佰云.秒嘀科技.极光短信和华信云通信短信验证码平台 ...
- 【短信发送】实现腾讯云发送短信功能--工具类和SpringBoot配置两种方法实现
实现腾讯云发送短信功能--工具类和SpringBoot配置两种方法实现 一.开通腾讯云短信服务 二.工具类--使用qcloudsms实现短信发送 三.Spring Boot项目引入短信发送功能 我们发 ...
- 实现 Java 发送短信功能
前言 前几日,有粉丝后台私信我如何实现发送短信的功能,刚好久一刚刚用到了这个功能,就把具体的实现过程记录下来,分享给大家. 我们日常使用的软件或者网站,大部分都在使用短信业务,比如注册.验证码功能.还 ...
- 7 分钟实现 Java 发送短信功能!
阅读文本大概需要 7 分钟. 前言 前几日,有粉丝后台私信我如何实现发送短信的功能,刚好久一刚刚用到了这个功能,就把具体的实现过程记录下来,分享给大家. 我们日常使用的软件或者网站,大部分都在使用短信 ...
- TP5调用阿里云短信接口实现发送短信功能
TP5调用阿里云短信接口实现发送短信功能 工作需要,对接阿里云的短信服务,借此记录一下(网站 www.lelee.top) 主要分为两个部分,一是下载官方的Demo事例,这个不需要多说,自己去下载就行 ...
- springboot集成阿里云短信服务,实现发送短信功能
springboot集成阿里云短信服务,实现发送短信功能 准备工作: 1.登陆阿里云->进入控制台->开通短信服务(进入后根据提示开通) 2.充值(借人家平台发短信你以为不要钱的?我充了3 ...
- php可以发短信的代码,PHP代码函数实现PHP发送短信功能
//PHP代码函数实现PHP发送短信功能 //本代码基于开心洋葱 运行 //代码来源:开心洋葱 //PHP发送短信开心洋葱专用(PHP代码函数) //本代码基于开心洋葱 运行 //代码来源:开心洋葱 ...
- android 发短信意图,android代码实现打电话和发送短信功能
android代码实现打电话和发送短信功能 发布时间:2020-05-27 11:57:17 来源:亿速云 阅读:172 作者:鸽子 1.XML布局 xmlns:app="http://sc ...
最新文章
- 简明python教程 豆瓣-Python 有哪些入门学习方法和值得推荐的经典教材?
- 6、HTML有序列表+无序列表+定义列表
- [剑指offer]8.重建二叉树
- SpringMVC面试
- MTK 驱动(49)---TP测试规范
- ThinkPad T470P拆机加固态硬盘 建兴 T11 plus
- 【转】TabHost详解
- 洋桃开发板笔记(五 ) Flash闪存的使用
- 发布uubox.net客户端工具及其源代码
- Cygwin安装教程【超详细】
- win10c盘扩容_【电脑维护宝典】C盘不再亮起红灯!
- kafka接口操作topic
- 鼠标光标变成方块怎么办
- 家用监控系统需要服务器吗,家庭监控系统实现(一)
- TIOBE 11 月编程语言:Java 首次跌出前二;基于Pytorch的Kornia可微分计算机视觉库开源...
- 线程池和信号量模拟酒店(旅店)预定房间
- html5坐标原点在哪,文化 _ 你知道上海的城市坐标原点吗
- 14岁妹妹欲捐骨髓救乱患红血病哥哥
- oracle 取季度末,根据季度及年度值,查季度末最后一天
- 服务器文件夹重定向,文件夹重定向
热门文章
- T2D_Chapter1_ComputerNetwork and Internet
- java线程游戏V4之飞机大战(一)
- 【软考学习5】流水线基本概念、周期执行时间、吞吐率、加速比和效率的计算
- 推送消息mqtt协议服务器域名云喇,推送消息mqtt协议服务器域名云喇
- 刷服务器喇叭网络连接中断,网络连接中断?常见网络中断的解决方法
- dip和px相互转换的工具类
- 如何自行编译HPL-GPU 来测试Benchmark
- 剑网3手游微信52服务器灵霄峡,剑网3指尖江湖灵霄峡怎么打 剑网3手游灵霄峡成就副本打法及阵容推荐攻略...
- 无“网络中立”的时代,我们该如何保证网络安全
- JAVA零基础入门第一阶段(4)