手机短信验证码挺简单的,分为下面步骤

1.生成一个随机的验证码,保存到缓存中。

2.使用http,使用手机号给短信网关发送一个请求,把验证码发送给用户。

3.用户获得短信验证码后,输入到系统中,发送请求,系统接收用户输入验证码,对比缓存中的验证码,是否一致。一致则验证通过。

工具类

import java.util.Random;
import org.apache.commons.lang3.RandomStringUtils;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import cn.cuco.httpservice.HttpClientUtils;/*** @ClassName:* @Description:*/
public class SMSUtils {protected Logger logger = Logger.getLogger(this.getClass());public static boolean sendMessage(String mobile, String identifyCode) {boolean result = false;String userId = "用户名";String password = "密码";String pszMobis = mobile;String pszMsg = "正式完成短信验证" + "【" + identifyCode + "】";// +String iMobiCount = "1";String pszSubPort = "*";String MsgId = RandomStringUtils.randomNumeric(19);try {String url = "请求网关"//+ "userId=" + userId//+ "&password=" + password//+ "&pszMobis=" + pszMobis//+ "&pszMsg=" + pszMsg//+ "&iMobiCount=" + iMobiCount//+ "&pszSubPort=" + pszSubPort//+ "&MsgId=" + MsgId;String responseBody = HttpClientUtils.sendGet(url, null, "UTF-8");if (StringUtils.isNotBlank(responseBody)) {String sub = responseBody.substring(74, responseBody.lastIndexOf("</string>"));System.out.println("截取返回值=================" + sub);if (sub.length() > 15) {// 返回值长度大于15则表示成功result = true;System.out.println("验证码发至{}送成功" + mobile);} else {System.out.println("验证码发至{}失败{}" + mobile + responseBody);}}} catch (Exception e) {System.out.println("验证码发至{}异常{}" + mobile + e.getMessage());}return result;}/*** 产生4位随机数(0000-9999)* * @return 4位随机数*/public static String getFourRandom() {Random random = new Random();String fourRandom = random.nextInt(10000) + "";int randLength = fourRandom.length();if (randLength < 4) {for (int i = 1; i <= 4 - randLength; i++)fourRandom = "0" + fourRandom;}return fourRandom;}public static void main(String[] args) {String mobile = "18333601438";String identifyCode = getFourRandom();SMSUtils.sendMessage(mobile, identifyCode);}
}

sendGet,使用get方式请求

 /*** HTTP Get 获取内容* @param url  请求的url地址 ?之前的地址* @param params  请求的参数* @param charset  编码格式* @return 页面内容* @throws IOException * @throws UnsupportedEncodingException * @throws ParseException */public static String sendGet(String url, Map<String, String> params, String charset) throws ParseException, UnsupportedEncodingException, IOException {if (StringUtils.isBlank(url)) {return null;}log.info("HTTP get 发送的url 为>>>>>>>>>" + url);if (params != null && !params.isEmpty()) {List<NameValuePair> pairs = new ArrayList<NameValuePair>(params.size());for (Map.Entry<String, String> entry : params.entrySet()) {String value = entry.getValue();if (value != null) {pairs.add(new BasicNameValuePair(entry.getKey(), value));}}url += "?" + EntityUtils.toString(new UrlEncodedFormEntity(pairs, charset));}HttpGet httpGet = new HttpGet(url);CloseableHttpClient httpClient;RequestConfig config = RequestConfig.custom().setConnectTimeout(60000).setSocketTimeout(15000).build();httpClient = HttpClientBuilder.create().setDefaultRequestConfig(config).build();CloseableHttpResponse response = httpClient.execute(httpGet);int statusCode = response.getStatusLine().getStatusCode();if (statusCode != 200) {httpGet.abort();throw new RuntimeException("HttpClient,error status code :" + statusCode);}HttpEntity entity = response.getEntity();String result = null;if (entity != null) {result = EntityUtils.toString(entity, "utf-8");}EntityUtils.consume(entity);response.close();return result;}

执行测试

 public static void main(String[] args) {String mobile = "手机号";String identifyCode = getFourRandom();SMSUtils.sendMessage(mobile, identifyCode);}

使用:在使用的时候只需要替换掉代码中的,用户名,密码和请求的网关,就可以直接使用。

梦网科技--手机短信验证码实现相关推荐

  1. 手机短信验证码真的安全吗?

    手机的蓬勃发展,衍生出来众多行业,也让原本功能单一的手机号做出极大的改变.如今似乎每个人的手机号都绑定了或多或少的各种账号,手机绑定的东西越来越多,涉及到的重要的东西也越来越多,例如像银行卡绑定手机号 ...

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

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

  3. Atitit. 破解  拦截 绕过 网站 手机 短信 验证码  方式 v2 attilax 总结

    Atitit. 破解  拦截 绕过 网站 手机 短信 验证码  方式 v2 attilax 总结 1. 验证码的前世今生1 1.1. 第一代验证码 图片验证码1 1.2. 第二代验证码  用户操作 , ...

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

    为什么80%的码农都做不了架构师?>>>    一.样式示例: 二.前台的注册页面的代码:reg.jsp <%@ page language="java" ...

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

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

  6. 如何实现下发手机短信验证码

    如何实现下发手机短信验证码 我们都遇到过这种情况,某个账号长时间没登录某天想要登录的时候,却发现密码早已忘记,这时候想要找回密码很可能就用到了手机短信验证的功能,在有些网站注册账号的时候往往也需要手机 ...

  7. 使用java实现手机短信验证码

    使用java实现手机短信验证码 一.配置第三方短信接口 二.代码部分 三.效果展示 一.配置第三方短信接口 我们使用阿里云的短信服务(可以免费体验) 阿里云 进入阿里云的官网,查找短信服务,点击短信控 ...

  8. SpringBoot整合手机短信验证码

    手机短信验证码技术 1.流程图 前端点击发送手机验证码 后端判断恶意请求拦截[手机号码限制次数 - redis设置过期时间,自增 - 大于10次直接抛异常 - 没有做] 验证图形验证码是否正确,不正确 ...

  9. 基于阿里云的手机短信验证码和注册校验逻辑

    基于阿里云的手机短信验证码demo实现 1. 环境依赖 2. 页面表单 html 3. 校验与短信 js 4. 工具类 SmsUtils 5. 资源调用 Servlet 阿里云的短信平台:http:/ ...

最新文章

  1. JAVA深入研究——Method的Invoke方法。
  2. Atitit.数据操作dsl 的设计 ---linq 方案
  3. C++中的指针特征操作符重载
  4. android ndk 编译c++11,Android NDK的C++11标准支持
  5. Linux物理CPU及逻辑CPU查看
  6. torch中Dataset的构造与解读
  7. 持续集成Jenkins
  8. bootstrap插件bootbox参数和自定义弹出框宽度设置
  9. 昆工c语言题库,昆明理工大学C语言期末统考试题
  10. Apache HTTP服务器 2.0版本文档
  11. 09-排序2 Insert or Merge
  12. 极光 MPush 资料
  13. MAC小技巧|Mac屏幕截图去除窗口阴影
  14. c语言整型常量后加l或u,《软考程序员》整型常量
  15. 通过 wordexport插件 js jq 生成word文档 并导出
  16. HDU6069 Counting Divisors
  17. 沃达丰高管:澳大利亚将于2020年迎来5G
  18. 24点问题(增加数据)·回溯
  19. word2016 表格标尺偏移问题
  20. [ 安装 ] MySQL安装步骤!

热门文章

  1. Android代码中发送Keycode按键
  2. IOS AVPlayer无法播放H265编码格式的MP4视频
  3. 完结篇 | 吴恩达deeplearning.ai专项课程精炼笔记全部汇总
  4. Webex Player 安装文件,解决了不能播放问题,win7也能使用
  5. 什么是商品流通的环节?如何减少流通成本?
  6. 【C++】【第六篇-2】【黑马 p215~p242】【list容器】【set/multiset容器】【map/multimap容器】【函数对象】【谓词】【内建函数对象】
  7. Linux串口驱动程序(1)-tty驱动程序架构
  8. Dubbo服务正常发布,但消费不到的问题,也有可能是没有正确发布
  9. 【游戏建模】3DMAX插件安装与详细说明
  10. office更新失败,无法打开