目录结构:

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+"&timestamp="+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 +秒嘀科技 实现发送短信功能相关推荐

  1. java接入秒嘀API实现发送短信功能

    ①百度秒嘀 进入并注册 会赠送10元 大约200条 足够测试了 ②得到accountID和token ③找到API ' ⑤创建一个模板,你的内容只有和你的模板对应好了才会发送成功. ⑥写一个JAVA程 ...

  2. 2021最新短信验证码接收平台收费价格对比「二」:亿佰云、秒嘀科技、极光短信、华信云通信

    " 亿佰云.秒嘀科技.极光短信.华信云通信这四家短信验证码平台都是怎么收费的,一条短信验证码价格多少钱,企业应当如何进行选择.今天评测下 亿佰云.秒嘀科技.极光短信和华信云通信短信验证码平台 ...

  3. 【短信发送】实现腾讯云发送短信功能--工具类和SpringBoot配置两种方法实现

    实现腾讯云发送短信功能--工具类和SpringBoot配置两种方法实现 一.开通腾讯云短信服务 二.工具类--使用qcloudsms实现短信发送 三.Spring Boot项目引入短信发送功能 我们发 ...

  4. 实现 Java 发送短信功能

    前言 前几日,有粉丝后台私信我如何实现发送短信的功能,刚好久一刚刚用到了这个功能,就把具体的实现过程记录下来,分享给大家. 我们日常使用的软件或者网站,大部分都在使用短信业务,比如注册.验证码功能.还 ...

  5. 7 分钟实现 Java 发送短信功能!

    阅读文本大概需要 7 分钟. 前言 前几日,有粉丝后台私信我如何实现发送短信的功能,刚好久一刚刚用到了这个功能,就把具体的实现过程记录下来,分享给大家. 我们日常使用的软件或者网站,大部分都在使用短信 ...

  6. TP5调用阿里云短信接口实现发送短信功能

    TP5调用阿里云短信接口实现发送短信功能 工作需要,对接阿里云的短信服务,借此记录一下(网站 www.lelee.top) 主要分为两个部分,一是下载官方的Demo事例,这个不需要多说,自己去下载就行 ...

  7. springboot集成阿里云短信服务,实现发送短信功能

    springboot集成阿里云短信服务,实现发送短信功能 准备工作: 1.登陆阿里云->进入控制台->开通短信服务(进入后根据提示开通) 2.充值(借人家平台发短信你以为不要钱的?我充了3 ...

  8. php可以发短信的代码,PHP代码函数实现PHP发送短信功能

    //PHP代码函数实现PHP发送短信功能 //本代码基于开心洋葱 运行 //代码来源:开心洋葱 //PHP发送短信开心洋葱专用(PHP代码函数) //本代码基于开心洋葱 运行 //代码来源:开心洋葱 ...

  9. android 发短信意图,android代码实现打电话和发送短信功能

    android代码实现打电话和发送短信功能 发布时间:2020-05-27 11:57:17 来源:亿速云 阅读:172 作者:鸽子 1.XML布局 xmlns:app="http://sc ...

最新文章

  1. 简明python教程 豆瓣-Python 有哪些入门学习方法和值得推荐的经典教材?
  2. 6、HTML有序列表+无序列表+定义列表
  3. [剑指offer]8.重建二叉树
  4. SpringMVC面试
  5. MTK 驱动(49)---TP测试规范
  6. ThinkPad T470P拆机加固态硬盘 建兴 T11 plus
  7. 【转】TabHost详解
  8. 洋桃开发板笔记(五 ) Flash闪存的使用
  9. 发布uubox.net客户端工具及其源代码
  10. Cygwin安装教程【超详细】
  11. win10c盘扩容_【电脑维护宝典】C盘不再亮起红灯!
  12. kafka接口操作topic
  13. 鼠标光标变成方块怎么办
  14. 家用监控系统需要服务器吗,家庭监控系统实现(一)
  15. TIOBE 11 月编程语言:Java 首次跌出前二;基于Pytorch的Kornia可微分计算机视觉库开源...
  16. 线程池和信号量模拟酒店(旅店)预定房间
  17. html5坐标原点在哪,文化 _ 你知道上海的城市坐标原点吗
  18. 14岁妹妹欲捐骨髓救乱患红血病哥哥
  19. oracle 取季度末,根据季度及年度值,查季度末最后一天
  20. 服务器文件夹重定向,文件夹重定向

热门文章

  1. T2D_Chapter1_ComputerNetwork and Internet
  2. java线程游戏V4之飞机大战(一)
  3. 【软考学习5】流水线基本概念、周期执行时间、吞吐率、加速比和效率的计算
  4. 推送消息mqtt协议服务器域名云喇,推送消息mqtt协议服务器域名云喇
  5. 刷服务器喇叭网络连接中断,网络连接中断?常见网络中断的解决方法
  6. dip和px相互转换的工具类
  7. 如何自行编译HPL-GPU 来测试Benchmark
  8. 剑网3手游微信52服务器灵霄峡,剑网3指尖江湖灵霄峡怎么打 剑网3手游灵霄峡成就副本打法及阵容推荐攻略...
  9. 无“网络中立”的时代,我们该如何保证网络安全
  10. JAVA零基础入门第一阶段(4)