在网站开发中的注册模块中,短信接收验证码是大部分网站必不可少的功能。这里我就简单总结了一下实现发送短信验证码的功能。

这里用的是秒滴短信服务平台。新用户注册给200条短信,测试够用了。

下面直接上实现代码吧,我这里主要是用作记录笔记大家也可以参考一下。

用到的pom文件:

4.0.0

com.hxkj.com

hellohao01

0.0.1-SNAPSHOT

war

hellohao01

UTF-8

commons-beanutils

commons-beanutils

1.8.0

commons-logging

commons-logging

1.1.1

commons-collections

commons-collections

3.2

commons-lang

commons-lang

2.4

net.sf.ezmorph

ezmorph

1.0.6

net.sf.json-lib

json-lib

2.4

jdk15

javax

javaee-api

7.0

provided

org.glassfish.web

javax.servlet.jsp.jstl

1.2.2

maven-compiler-plugin

2.3.2

1.7

1.7

maven-war-plugin

2.2

3.1

false

创建一个RandUtil类,用于生成验证码:

package org.hellohao.ustil;

import java.util.Random;

public class RandUtil {

public static String getRandNum() {

String randNum = new Random().nextInt(1000000)+"";

System.out.println("生成"+randNum);

if (randNum.length()!=6) { //如果生成的不是6位数随机数则返回该方法继续生成

return getRandNum();

}

return randNum;

}

}

创建QueryUtil类:

package org.hellohao.ustil;

import java.security.MessageDigest;

import java.security.NoSuchAlgorithmException;

import java.text.SimpleDateFormat;

import java.util.Date;

public class QueryUtil {

public static String queryArguments(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;

return str;

}

/**

* MD5加密

* @param args

* @return

*/

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();

}

/*

* 获取时间戳

*/

public static String getTimestamp(){

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");

Date date = new Date();

return sdf.format(date);

}

}

创建实现发送短信的类GetMessage:

package org.hellohao.ustil;

import net.sf.json.JSONObject;

import java.io.BufferedReader;

import java.io.InputStream;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.net.URL;

import java.net.URLConnection;

public class GetMessage {

static String user="张三";

/**

* 用户ID

*/

public static final String ACCOUNT_SID = "xxxxxx";//这里填写你在平台里的ACOUNT_SID

/**

* 密钥

*/

public static final String AUTH_TOKEN = "xxxxxx";

/**

* 请求地址前半部分

*/

public static final String BASE_URL = "https://api.miaodiyun.com/20150822/industrySMS/sendSMS";//请求地址是固定的不用改

public static String randNum = RandUtil.getRandNum();

public static String smsContent = "【世豪有限公司】亲爱的"+user+",您的验证码为"+randNum+",请于"+2+"分钟内正确输入,如非本人操作,请忽略此短信。";

/**

* (获取短信验证码)

* @param to

* @return String

*/

public static String getResult(String to) {

randNum = RandUtil.getRandNum();

String smsContent = "【世豪有限公司】亲爱的"+user+",您的验证码为"+randNum+",请于"+2+"分钟内正确输入,如非本人操作,请忽略此短信。"; //这里的randNum 和 smsContent和上面的静态变量是一样的,可删除可保留

String args = QueryUtil.queryArguments(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 (Exception e) {

e.printStackTrace();

}finally {

try {

if (br!=null) {

br.close();

}

if (out!=null) {

out.close();

}

} catch (Exception e2) {

e2.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"));

if (!object.equals("00000")) {

return object.toString();

}else{

return randNum;

}

}

// 测试功能

public static void main(String[] args) {

String result = getResult("15555555555"); //这里填写要接受验证码的手机号

System.out.println("验证码:"+randNum+"\t"+result);

}

}

–END–

java短信验证码功能发送的验证码如何校验_java实现发送短信验证码相关推荐

  1. java短信验证码功能发送的验证码如何校验_java 实现发送短信验证码功能

    原标题:java 实现发送短信验证码功能 如何使用java + maven的项目环境发送短信验证码,本文使用的是榛子云短信 的接口. 1. 安装sdk 下载地址: http://smsow.zhenz ...

  2. java短信验证码功能发送的验证码如何校验_Java实现发送短信验证码功能

    一个发送短信验证码的功能,使用的是信易通的短信平台接口,然后在Java中使用HttpClient模拟POST请求或者GET请求(看短信平台要求,一般的情况下都是POST请求),调用短信平台提供的接口( ...

  3. 实现app短信验证码功能这样做就很简单!

    现在大多数app短信验证码服务都是由第三方服务商提供的,企业不需要对接运营商就可以让app具备三网发送短信功能,现在app短信验证码使用场景很多,比如说注册.登陆.支付等场景,app短信验证码实现的原 ...

  4. 拼图java监听器,Android 简单的实现滑块拼图验证码功能

    实现滑块拼图验证码功能之前已经写过一篇了,上一篇使用的是自定义控件的方式实现这个功能,主要还是想让童鞋们知其然更知其所以然,还没看的童鞋可以先看看Android实现滑块拼图验证码功能这篇. 在项目的开 ...

  5. 手把手教你如何在安卓平台上实现打电话发短信的功能

    首发地址 http://www.eoeandroid.com/thread-228079-1-1.html 1 案例目的 本案例通过一个简单通讯工具来巩固android的activity.Linear ...

  6. 飞信 服务器位响应 2016,飞信新增短信回执功能 办公高效如虎添翼

    给大家群发邮件,担心同事看不到?发起一个会议,对方响应速度慢?NO!飞信2015和沟通版为你排忧解难! 最近,飞信2015和沟通版新版本上线,"短信中心"功能顺心而至,不仅增加了短 ...

  7. c语言拼图验证码编写,Android 简单的实现滑块拼图验证码功能

    实现滑块拼图验证码功能之前已经写过一篇了,上一篇使用的是自定义控件的方式实现这个功能,主要还是想让童鞋们知其然更知其所以然,还没看的童鞋可以先看看Android实现滑块拼图验证码功能这篇. 在项目的开 ...

  8. .NET Core实战项目之CMS 第十六章 用户登录及验证码功能实现

    前面为了方便我们只是简单实现了基本业务功能的增删改查,但是登录功能还没有实现,而登录又是系统所必须的,得益于 ASP.NET Core的可扩展性因此我们很容易实现我们的登录功能.今天我将带着大家一起来 ...

  9. Java调用WebService接口实现发送手机短信验证码功能,java 手机验证码,WebService接口调用...

    近来由于项目需要,需要用到手机短信验证码的功能,其中最主要的是用到了第三方提供的短信平台接口WebService客户端接口,下面我把我在项目中用到的记录一下,以便给大家提供个思路,由于本人的文采有限, ...

  10. java调接口实现发送手机短信验证码功能,手机验证码,接口调用

    原文地址:  http://blog.csdn.net/sxdtzhaoxinguo/article/details/34437591 近来由于项目需要,需要用到手机短信验证码的功能,其中最主要的是用 ...

最新文章

  1. 关系抽取论文整理,核方法、远程监督的重点都在这里
  2. 素数c语言程序解题思路,C语言上机实验题目解题思路.doc
  3. RHEL5 RHEL6升级GCC
  4. 深入剖析js命名空间函数namespace
  5. JavaScript 中的闭包和作用域链(读书笔记)
  6. 直流降压的简单方法_量血压的重大误区和简单的降压方法,尽快转告身边人!...
  7. Linux创建oracle11实例
  8. 【BZOJ1146】网络管理,整体二分
  9. 4thweek.P_problemB .poj1505copy books.二分法
  10. Oracle XE http端口8080的修改
  11. 铃儿响叮当用计算机怎么弹,铃儿响叮当钢琴弹奏教学视频
  12. apache调优隐藏版本信息及404重定向
  13. Spring Cloud之服务治理(注册发现)
  14. SSIS中的字符映射表转换组件
  15. 数字信号处理及其MATLAB实现总结
  16. 车道线定位及拟合:直方图确定车道线位置
  17. 关于linux的filp->private_data解释
  18. the remote end hung up unexpectedly Everything up-to-date
  19. js的tree转数组
  20. vs2015不使用方向键移动光标快捷键

热门文章

  1. rgb sw 线主板接口在哪_华硕ROG STRIX LC 360 RGB一体式水冷:与ROG主板更配
  2. [ 树形DP ] BZOJ4987
  3. 连连跨境支付独立站收款,最高90天提现0费率!
  4. Armv8-R系列之何为MPU?
  5. magento-onestep-checkout-remove-payment-method-step
  6. word有符号时 对齐_对齐Excel货币符号时遇到问题
  7. 响应式垂直时间轴js特效插件 带动画效果
  8. jQuery之文档就绪事件
  9. 2014年值得关注的10个开源项目 下
  10. Android 11 : 隐私和安全