短信验证是在项目开发中使用非常普遍,为了方便以后的开发使用,总结一篇使用秒嘀云的实现短信验证的文章,方便在以后的开发中能够使用到。

一:准备工作

1、注册账户:http://www.miaodiyun.com/home.html    在秒嘀云上注册新用户,用于获取ACCOUNT SID和AUTH TOKEN(新用户注册成功后,会免费赠送10元,仅限于短信验证)

2、在配置管理中创建短信模板

创建的模板信息需要在代码中使用得到,所以一定要保持一致,否则在运行项目中会出现异常。比如:

二:代码实现

1、Config.java  主要是一些参数信息,这里我们要把他改成自己注册获取的token和sid.

/*** 系统常量*/
public class Config {/*** url前半部分*/public static final String BASE_URL = "https://api.miaodiyun.com/20150822";/*** 开发者注册后系统自动生成的账号,可在官网登录后查看*/public static final String ACCOUNT_SID = "ade939b3672046f49b2399e9d1******";/*** 开发者注册后系统自动生成的TOKEN,可在官网登录后查看*/public static final String AUTH_TOKEN = "d27dc817c6d549d28a7747de29******";/*** 响应数据类型, JSON或XML*/public static final String RESP_DATA_TYPE = "json";
}

2、HttpUtil.java(Http工具)

package com.miaodiyun.httpApiDemo.common;import java.io.BufferedReader;
import java.io.IOException;
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 org.apache.commons.codec.digest.DigestUtils;/*** http请求工具*/
public class HttpUtil
{/*** 构造通用参数timestamp、sig和respDataType* * @return*/public static String createCommonParam(){// 时间戳SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");String timestamp = sdf.format(new Date());// 签名String sig = DigestUtils.md5Hex(Config.ACCOUNT_SID + Config.AUTH_TOKEN + timestamp);return "&timestamp=" + timestamp + "&sig=" + sig + "&respDataType=" + Config.RESP_DATA_TYPE;}/*** post请求* * @param url*            功能和操作* @param body*            要post的数据* @return* @throws IOException*/public static String post(String url, String body){System.out.println("url:" + System.lineSeparator() + url);System.out.println("body:" + System.lineSeparator() + body);String result = "";try{OutputStreamWriter out = null;BufferedReader in = null;URL realUrl = new URL(url);URLConnection conn = realUrl.openConnection();// 设置连接参数conn.setDoOutput(true);conn.setDoInput(true);conn.setConnectTimeout(5000);conn.setReadTimeout(20000);conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");// 提交数据out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");out.write(body);out.flush();// 读取返回数据in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));String line = "";boolean firstLine = true; // 读第一行不加换行符while ((line = in.readLine()) != null){if (firstLine){firstLine = false;} else{result += System.lineSeparator();}result += line;}} catch (Exception e){e.printStackTrace();}return result;}/*** 回调测试工具方法* * @param url* @param reqStr* @return*/public static String postHuiDiao(String url, String body){String result = "";try{OutputStreamWriter out = null;BufferedReader in = null;URL realUrl = new URL(url);URLConnection conn = realUrl.openConnection();// 设置连接参数conn.setDoOutput(true);conn.setDoInput(true);conn.setConnectTimeout(5000);conn.setReadTimeout(20000);// 提交数据out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");out.write(body);out.flush();// 读取返回数据in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));String line = "";boolean firstLine = true; // 读第一行不加换行符while ((line = in.readLine()) != null){if (firstLine){firstLine = false;} else{result += System.lineSeparator();}result += line;}} catch (Exception e){e.printStackTrace();}return result;}
}

3、IndustrySMS

作用:设置验证码的数据

package com.miaodiyun.httpApiDemo;import java.net.URLEncoder;import com.miaodiyun.httpApiDemo.common.Config;
import com.miaodiyun.httpApiDemo.common.HttpUtil;/*** 验证码通知短信接口* * @ClassName: IndustrySMS* @Description: 验证码通知短信接口**/
public class IndustrySMS {private static String operation = "/industrySMS/sendSMS";private static String accountSid = Config.ACCOUNT_SID;private static String to = "1521090****";//您的验证码为{1},请于{2}分钟内正确输入,如非本人操作,请忽略此短信。private static String smsContent = "【小郭科技123】您的验证码为123456,请于2分钟内正确输入,如非本人操作,请忽略此短信。";/*** 验证码通知短信*/public static void execute() {String tmpSmsContent = null;try {tmpSmsContent = URLEncoder.encode(smsContent, "UTF-8");} catch (Exception e) {}String url = Config.BASE_URL + operation;String body = "accountSid=" + accountSid + "&to=" + to + "&smsContent=" + tmpSmsContent+ HttpUtil.createCommonParam();// 提交请求String result = HttpUtil.post(url, body);System.out.println("result:" + System.lineSeparator() + result);}
}

三、测试代码

package com.miaodiyun.httpApiDemo;public class Test {/*** @param args*/public static void main(String[] args) {// 获取开发者账号信息// AccountInfo.execute();// 验证码通知短信接口IndustrySMS.execute();// 会员营销短信接口// AffMarkSMS.execute();// 语音验证码// VoiceCode.execute();}
}

java实现短信验证【秒嘀云】相关推荐

  1. JAVA实现短信接口的使用、短信验证码的发送(第三方短信平台秒嘀云)

    前言 短信验证登录咱就不多说了,为啥推荐用秒嘀,秒嘀的网页没有广告,并且注册送十块足够新手使用了.但是秒嘀的其它功能需要上传营业执照. 注册账号 https://sms.miaodiyun.com/l ...

  2. java手机短信验证,并存入redis中,验证码时效5分钟

    目录 1.注册发送短信账号一个账号 2.打开虚拟机,将redis服务端打开 3.创建springboot工程,导入相关依赖 4.写yml配置 5.创建controller层,并创建controller ...

  3. java调用短信验证失败_短信验证码被刷怎么办?java 短信验证码防刷策略

    一 事件简述 这是一件发生在前段时间的事情,当时的情况是这样的:一个新的功能模块上线之后,出现短信接口被恶意访问调用的情况,请求数量很大,而且通过查看短信服务商控制台也发现,短信发送量在飙升,看着统计 ...

  4. java网站短信接口_网云JAVA短信接口API

    final String userName = "注册用户名"; final String key = "接口鉴权KEY"; final String mobi ...

  5. 阿里云邮箱短信验证和阿里云手机短信发送

    1:阿里云邮箱验证:service层 /***输入的格式是2060084769@qq.com* 阿里云邮箱验证* @param email* @param Code* @return*/@Overri ...

  6. 云之讯短信验证视频php,云之讯短信接口GO实现

    将项目变量appId, accountSId和token使用自己的替换掉就可以了. 发送信息时直接调用函数SendSMS即可,传入参数电话号码,模板ID以及模板中参数.由于云之讯的参数是以逗号分隔的, ...

  7. java WEB调用秒嘀科技短信验证接口(实现短信验证登录)

    java WEB调用秒嘀科技短信验证接口(实现短信验证登录) 前言 注册秒嘀云账号 登录秒嘀云官网 代码 前言 短信验证登咱就不多说了,为什么推荐用秒嘀的呢,应为他会送你10元钱,对于新手来说10元钱 ...

  8. 阿里云短信验证解决方案(java版)(redis存储)

    阿里云短信验证解决方案(java版)(redis存储) 参考文章: (1)阿里云短信验证解决方案(java版)(redis存储) (2)https://www.cnblogs.com/Amos-Tur ...

  9. 容联云短信验证--java后台

    使用容联云通讯的短信验证(后台发送短信测试) 注册容联云通讯,获取相关配置数据 第一步--注册 容联云官网–注册 第二步--记录 找到开发者主账号,必须要用到的三个id 一.ACCOUNT SID(主 ...

最新文章

  1. SSM框架整合(Spring+SpringMVC+MyBatis)
  2. json.dumps和loads方法
  3. fir.im Weekly - 做一款 App 需要考虑什么
  4. android+证书存储,Firefox for Android是否使用设备证书存储?
  5. Web开发如何实现Tomcat等服务器热部署不用重启
  6. php中这个向右的箭头怎么理解呢?$db-query
  7. 新年干货 | NLP一路走来的经验之谈
  8. ABAP调用HTTP服务
  9. HDP 03.FreeIPA安装
  10. 浅谈微信与微博的区别
  11. 2020-04-10盘后总结,缩量下跌,成交量低迷
  12. Wordpress 网站添加打赏插件
  13. route 不同路由器 windows_如何检查路由器WiFi信号的好坏?
  14. 2022年度“强国杯”选拔赛 WriteUp
  15. 计算机计算性能,计算机计算能力的关键特点
  16. 生物信息学之抗癌药物反应论文阅读五:L1000+DTI
  17. win7中能对窗口的排列方法是_win7系统窗口智能排列的操作方法
  18. 计算机应用基础提问话题,10个开启新话题的过渡方法.docx-汇文网
  19. 【网络技术题库整理3】服务器和路由器技术
  20. 用c语言编程阿姆斯特朗数,C语言水仙花数,阿姆斯特朗数

热门文章

  1. 使用nginx搭建一个RTMP流服务器
  2. 考NPDP有什么好处
  3. GDC - 《幽灵行动:荒野》地形技术和工具(三)
  4. 微信小程序 自定义组件实现通信
  5. python:【一文学会】批量读取图片、替换背景图中的像素位置、批量添加文本
  6. 如何在网页设计中正确应用色彩?
  7. 动态规划解决数字三角形
  8. 深度:激光和光纤诞生记
  9. 红米除线刷的另外一种救砖方法fastboot
  10. [OTHER]死性不改童声版歌词