java 短信换行_四步,搞定一个短信验证码登录!
1、构造手机验证码:使用random对象生成要求的随机数作为验证码,例如4位验证码:1000~9999之间随机数;
2、使用接口向短信平台发送手机号和验证码数据,然后短信平台再把验证码发送到制定手机号上,接口参数一般包括:目标手机号,随机验证码(或包含失效时间),平台接口地址,平台口令;
3、保存接口返回的信息(一般为json文本数据,然后需转换为json对象格式);
4、将手机号--验证码、操作时间存入Session中,作为后面验证使用;
5、接收用户填写的验证码及其他数据;
6、对比提交的验证码与Session中的验证码是否一致,同时判断提交动作是否在有效期内;
7、验证码正确且在有效期内,请求通过,处理相应的业务。
一、首先添加一个jar包,工具类会用到。
commons-codec
commons-codec
1.11
我这里只是编写一个简单的短信验证功能,要是用其他的语音验证。。。。等等需要去秒滴云官方下载文档,下面是编写的一个config文档,专门存放一些参数。
img
二、编写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 "×tamp=" + 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;
}
}
三、生成四位数的方法
public static String runNumber() {
String str="ABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
StringBuilder sb=new StringBuilder(4);
for(int i=0;i<4;i++)
{
char ch=str.charAt(new Random().nextInt(str.length()));
sb.append(ch);
}
System.out.println(sb.toString());
String code = sb.toString();
return code;
}
四、执行方法execute(),便会发送成功
public class IndustrySMS
{
private static String operation = "/industrySMS/sendSMS";
private static String accountSid = Config.ACCOUNT_SID;
private static String to = "15342349382";
private static String smsContent = "【小陶科技】登录验证码:{"+runNumber().toString()+"},如非本人操作,请忽略此短信。";
/**
* 验证码通知短信
*/
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);
}
作者: classabcd
本文链接:https://blog.csdn.net/classabcd/article/details/82464582
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。 近期热文推荐:
觉得不错,别忘了随手点赞+转发哦!
java 短信换行_四步,搞定一个短信验证码登录!相关推荐
- RxJava的使用,教你四步搞定RxBus.
教你四步搞定RxBus. 1,在你的工程中添加依赖 dependencies {compile fileTree(include: ['*.jar'], dir: 'libs')testCompi ...
- xbox虚拟服务器,小白玩家看这里!国行Xbox One快速上手攻略 四步搞定
小白玩家看这里!国行Xbox One快速上手攻略 四步搞定 2014-09-25 10:55:04来源:游戏下载编辑:评论(0) 还有4天时间国行Xbox One就将与大陆玩家见面了,想想还是有点小激 ...
- 四步搞定ansible-tower
四步搞定ansible-tower 环境准备 centos7 + 2c/G (笔者测试) step1 下载ansible-tower最新版 wget https://releases.ansible. ...
- 四步搞定OPENVAS安装
四步搞定OPENVAS安装 第一步: Configure Atomicorp Repository (as user root, only once) wget -q -O http://www.at ...
- dfema规则_六步搞定DFMEA表格
原标题:六步搞定DFMEA表格 档即用www.downjy.com向您分享如下的"六步搞定DFMEA表格"的知识.原版文档下载方法参照文章底部说明~ 1DFMEA的重大作用 FM ...
- 四步搞定阿里云RDS云数据库恢复到本地mysql数据库
第1步:下载提取工具和阿里云rds数据库备份文件 1.先去阿里云数据rds后台–>备份恢复–>下载你的数据备份 2.下载阿里云官方提供的rds_backup_extract.sh数据备份文 ...
- mfc通过ado链接oracle,VS2013环境下MFC通过ADO连接Oracle数据库 四步搞定
这两天需要做有关MFC连接Oracle的项目,上网搜了老半天,东拼西凑,终于搞通了MFC下ADO方式连接Oracle的程序. 下面就按我新建的项目来进行一下说明(项目名称:adooracle) 第一步 ...
- 四步搞定小菊花 Loading 动画
做动画最要的是思路,做多了,动画其实非常简单,我们今天来实现一个小菊花加载动画: 做动画的关键一步是「拆分」,这张图中包含了 12 根「小柱子」,每根小柱子的透明度不一样,让这 12 根「小柱子」旋转 ...
- SAP GUI 自动登录教程,简单四步搞定
第一步:更改注册表 在表中添加Security->EnablePassword 值设置为1 第二步:生成快捷方式 登录SAP GUI 点击注销旁边的按钮按提示生产快捷 生成后如图 第三步:生成加 ...
最新文章
- 后台开发经典书籍--深入理解计算机系统
- 这就是多媒体开发 视频竟然比连续图片更省带宽
- [设计模式-行为型]状态模式(State)
- 零基础带你学习MySQL—Select语句以及注意事项(十)
- php js获取session,原创:PHP与纯JS交互在当前页面读取SESSION不用AJAX等
- SQL创建触发器以及触发器的使用实例+详解
- 电赛提升----风力摆控制系统
- 不限速的免费下载神器,牛逼!
- js之this,call,apply用法
- 【C++错误处理】no matching function for call to transform
- 数据结构---列表[pf]
- Halcon DrawRegion()后会阻塞直到右键按下,请问如何主动取消绘制区域
- 沉睡者IT - 短视频简单无脑玩法,播放量10w+的藏头诗玩法,操作思路分享给你!
- excel怎么调用c语言程序设计,知识:Excel使用C语言进行读写,代码简单易懂
- nand falsh 111
- 防抱死制动系统(ABS)-Simulink仿真
- php 自带加密、解密函数
- 完美世界2017C++游戏开发笔试编程题
- Swift中string转换float/double的若干方法
- 配置子网IP:设置网卡高级IP地址,实现同时访问内网和互联网