梦网科技--手机短信验证码实现
手机短信验证码挺简单的,分为下面步骤
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);}
使用:在使用的时候只需要替换掉代码中的,用户名,密码和请求的网关,就可以直接使用。
梦网科技--手机短信验证码实现相关推荐
- 手机短信验证码真的安全吗?
手机的蓬勃发展,衍生出来众多行业,也让原本功能单一的手机号做出极大的改变.如今似乎每个人的手机号都绑定了或多或少的各种账号,手机绑定的东西越来越多,涉及到的重要的东西也越来越多,例如像银行卡绑定手机号 ...
- Java调用WebService接口实现发送手机短信验证码功能,java 手机验证码,WebService接口调用...
近来由于项目需要,需要用到手机短信验证码的功能,其中最主要的是用到了第三方提供的短信平台接口WebService客户端接口,下面我把我在项目中用到的记录一下,以便给大家提供个思路,由于本人的文采有限, ...
- Atitit. 破解 拦截 绕过 网站 手机 短信 验证码 方式 v2 attilax 总结
Atitit. 破解 拦截 绕过 网站 手机 短信 验证码 方式 v2 attilax 总结 1. 验证码的前世今生1 1.1. 第一代验证码 图片验证码1 1.2. 第二代验证码 用户操作 , ...
- Java调用WebService接口实现发送手机短信验证码功能
为什么80%的码农都做不了架构师?>>> 一.样式示例: 二.前台的注册页面的代码:reg.jsp <%@ page language="java" ...
- java调接口实现发送手机短信验证码功能,手机验证码,接口调用
原文地址: http://blog.csdn.net/sxdtzhaoxinguo/article/details/34437591 近来由于项目需要,需要用到手机短信验证码的功能,其中最主要的是用 ...
- 如何实现下发手机短信验证码
如何实现下发手机短信验证码 我们都遇到过这种情况,某个账号长时间没登录某天想要登录的时候,却发现密码早已忘记,这时候想要找回密码很可能就用到了手机短信验证的功能,在有些网站注册账号的时候往往也需要手机 ...
- 使用java实现手机短信验证码
使用java实现手机短信验证码 一.配置第三方短信接口 二.代码部分 三.效果展示 一.配置第三方短信接口 我们使用阿里云的短信服务(可以免费体验) 阿里云 进入阿里云的官网,查找短信服务,点击短信控 ...
- SpringBoot整合手机短信验证码
手机短信验证码技术 1.流程图 前端点击发送手机验证码 后端判断恶意请求拦截[手机号码限制次数 - redis设置过期时间,自增 - 大于10次直接抛异常 - 没有做] 验证图形验证码是否正确,不正确 ...
- 基于阿里云的手机短信验证码和注册校验逻辑
基于阿里云的手机短信验证码demo实现 1. 环境依赖 2. 页面表单 html 3. 校验与短信 js 4. 工具类 SmsUtils 5. 资源调用 Servlet 阿里云的短信平台:http:/ ...
最新文章
- JAVA深入研究——Method的Invoke方法。
- Atitit.数据操作dsl 的设计 ---linq 方案
- C++中的指针特征操作符重载
- android ndk 编译c++11,Android NDK的C++11标准支持
- Linux物理CPU及逻辑CPU查看
- torch中Dataset的构造与解读
- 持续集成Jenkins
- bootstrap插件bootbox参数和自定义弹出框宽度设置
- 昆工c语言题库,昆明理工大学C语言期末统考试题
- Apache HTTP服务器 2.0版本文档
- 09-排序2 Insert or Merge
- 极光 MPush 资料
- MAC小技巧|Mac屏幕截图去除窗口阴影
- c语言整型常量后加l或u,《软考程序员》整型常量
- 通过 wordexport插件 js jq 生成word文档 并导出
- HDU6069	Counting Divisors
- 沃达丰高管:澳大利亚将于2020年迎来5G
- 24点问题(增加数据)·回溯
- word2016 表格标尺偏移问题
- [ 安装 ] MySQL安装步骤!
热门文章
- Android代码中发送Keycode按键
- IOS AVPlayer无法播放H265编码格式的MP4视频
- 完结篇 | 吴恩达deeplearning.ai专项课程精炼笔记全部汇总
- Webex Player 安装文件,解决了不能播放问题,win7也能使用
- 什么是商品流通的环节?如何减少流通成本?
- 【C++】【第六篇-2】【黑马 p215~p242】【list容器】【set/multiset容器】【map/multimap容器】【函数对象】【谓词】【内建函数对象】
- Linux串口驱动程序(1)-tty驱动程序架构
- Dubbo服务正常发布,但消费不到的问题,也有可能是没有正确发布
- 【游戏建模】3DMAX插件安装与详细说明
- office更新失败,无法打开