接入短信验证码之前必须要进行测试,不然接好之后,短信平台不给力,有的重新换平台,增加劳动量还会被老板骂,虽说现在大部分的短信平台都支持测试,但是还得亲自实践一番才能选择最适合自己企业的短信平台

此次介绍的验证码接口是以Java开发的,是一个标准http协议的接口,其他的语言都可以接入。

首先我们先测试一个速度,有些平台是有两种方式,比如以下介绍的(大多数平台都只有一种方式)

其一:功能测试。直接输入手机号码,发送即可,观看从提交到手机收到验证码所需的时间,判断此平台的验证码相应速度。

其二:接口测试。这是给开发者使用的一个测试环境,开发者在接入之前可以进行接口测试,如果满足自己企业的速度要求,在进行接入即可!

其中接口测试中提到key这个参数,这个参数是注册时自动生成的一个秘钥,查看地址位于首页。注:不同的平台的命名方式不同,展现的位置也是不一样的。

接入之前必须需要设定的几个参数(短信签名、配置模板、单个手机号码日发送量限制、账户每日发送量限制、预警通知联系人号码)

短信签名和短信,模板是短信验证码必填项,签名一般是2-6个字,为企业的简称或者是商标简称等,短信模板也就是发送给用户的内容模板。

配备完成之后可以进行验证码接口接入,这里分别从前端代码和后端代码提供参考

前端代码

<html>
<head><meta charset="utf-8"/><meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=0"><!-- 国内使用 --><link rel="stylesheet" href="https://cdn.staticfile.org/amazeui/2.7.2/css/amazeui.min.css"><script type="text/javascript" charset="utf-8" src="https://cdn.staticfile.org/jquery/3.3.1/jquery.min.js"></script><script type="text/javascript" charset="utf-8" src="https://g.alicdn.com/sd/nch5/index.js?t=2015052012"></script><!-- 若您的主要用户来源于海外,请替换使用下面的js资源 --><!-- <script type="text/javascript" charset="utf-8" src="//aeis.alicdn.com/sd/nch5/index.js?t=2015052012"></script> --><style>.am-form{padding: 10px;}._nc .stage1 .slider{left: 0;right: 0;}</style>
</head>
<body><div class="am-form"><div class="am-form-group"><label for="tel">请输入手机号</label><input type="text" class="" id="tel" placeholder="请输入手机号"></div><div id="__nc" style="height: 70px"><div id="nc"></div></div><div class="am-form-group"><label for="code">请输入验证码</label><input id="code" type="text" placeholder="请输入验证码"></div><button type="button" class="am-btn am-btn-primary">提交</button>
</div><script>var nc_token = ["CF_APP_1", (new Date()).getTime(), Math.random()].join(':');var nc=NoCaptcha.init({renderTo: '#nc',appkey: 'CF_APP_1',scene: 'register',token: nc_token,trans: {"key1": "code200"},elementID: ["usernameID"],is_Opt: 0,language: "cn",timeout: 10000,retryTimes: 5,errorTimes: 5,inline:false,apimap: {
// 'analyze': '//a.com/nocaptcha/analyze.jsonp',
// 'uab_Url': '//aeu.alicdn.com/js/uac/909.js',},bannerHidden:false,initHidden:false,callback: function (data) {window.console && console.log(nc_token)window.console && console.log(data.csessionid)window.console && console.log(data.sig);var tel = $('#tel').val();$.ajax({url: "sendCode",type: "post",data: {tel:tel},dataType: "json",success: function (result) {if (result.code == 0) {alert("验证码已发送!", "green")} else {alert("发送失败,请稍后再试!");nc.reset()}},error: function () {alert("系统繁忙,请稍后再试!", "red")}})},error: function (s) {}});NoCaptcha.setEnabled(true);nc.reset();//请务必确保这里调用一次reset()方法NoCaptcha.upLang('cn', {'LOADING':"加载中...",//加载'SLIDER_LABEL': "请向右滑动验证",//等待滑动'CHECK_Y':"验证通过",//通过'ERROR_TITLE':"非常抱歉,这出错了...",//拦截'CHECK_N':"验证未通过", //准备唤醒二次验证'OVERLAY_INFORM':"经检测你当前操作环境存在风险,请输入验证码",//二次验证'TIPS_TITLE':"验证码错误,请重新输入"//验证码输错时的提示});
</script>
</body>
</html>

后端代码

HttpSession session = req.getSession();// TODO 验证码有效时间session.setMaxInactiveInterval(600);try {Integer num = RandNumber.getNum();// TODO 发送验证码通道Sendsms.Send(num, phone);session.setAttribute(phone, num);return R.ok();} catch (Exception e) {e.printStackTrace();logger.error(e.getMessage());return R.error("fasle");}
import java.io.Exception;import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;public class Sendsms {private static String Url = "https://vip.veesing.com/smsApi/verifyCode";// 发送短信验证码public static void Send(Integer num, String mobile) {try {HttpClient client = new HttpClient();PostMethod method = new PostMethod(Url);client.getParams().setContentCharset("UTF-8");method.setRequestHeader("ContentType", "application/x-www-form-urlencoded;charset=UTF-8");NameValuePair[] data = { new NameValuePair("appId", "*********"),new NameValuePair("appKey", "**********"), new NameValuePair("templateId", "*******"), new NameValuePair("mobile", "*******"),new NameValuePair("variables", "*******") };method.setRequestBody(data);client.executeMethod(method);String submitResult = method.getResponseBodyAsString();System.out.println(submitResult);} catch (Exception e) {e.printStackTrace();}}}
HttpSession session = req.getSession();String yzm = String.valueOf(session.getAttribute(username));logger.info(yzm);if (yzm == null) {return R.error("验证码错误");}if (yzm != null && !verifycode.equals(yzm)) {return R.error("验证码错误");}

随后附上短信验证码demo

package com.veesing.test; import java.io.IOException; import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
import com.alibaba.fastjson.JSONObject;
import com.veesing.utils.Config; /** * 短信验证码 * @author MWH * */
public class SmsCodeTest { public static void main(String[] args) { // 获取连接 HttpClient client = new HttpClient(); // 短信验证码API接口地址 PostMethod method = new PostMethod("https://vip.veesing.com/smsApi/verifyCode"); // 设置编码 client.getParams().setContentCharset("UTF-8"); method.setRequestHeader("ContentType", "application/x-www-form-urlencoded;charset=utf-8"); // 手机号码,一次只能提交一个手机号码 String phone = "15080929435"; //模板ID(如没有模板ID请先在平台上新增并提交验证码模板,审核通过即可使用) String templateId = "36"; // 验证码变量(随机数) Integer num = (int)((Math.random()*9+1)*1000); String variables = num.toString(); System.out.println("验证码是:"+variables); // 拼接参数 NameValuePair[] data = {  new NameValuePair("appId", Config.appid),  new NameValuePair("appKey", Config.appkey), new NameValuePair("phone", phone),  new NameValuePair("templateId", templateId),  new NameValuePair("variables", variables) }; method.setRequestBody(data); try { client.executeMethod(method); String result = method.getResponseBodyAsString(); // 返回结果 System.out.println(result); JSONObject jsonObject = JSONObject.parseObject(result); // 返回2000则发送成功(逻辑操作请根据接口文档返回参数自行判断) if (jsonObject.get("returnStatus").equals("2000")) { System.out.println("成功!"); } else { System.out.println("失败!"); } // 释放连接 method.setRequestHeader("Connection", "close");   method.releaseConnection(); } catch (HttpException e) { e.printStackTrace(); } catch (IOException e) { e.printStackTrace(); } }
} 

可以免费测试的短信验证码接口接入相关推荐

  1. 怎么一个好的短信验证码接口接入到自己的企业网站和APP程序当中选择

    文章来源:http://www.4006026717.com 短信验证码平台太多也是一种幸福的烦恼,毕竟好东西太多不知道该如何选也是很麻烦的.那么,如何选择一个好用的平台呢?下面小编为大家提供几个参考 ...

  2. 创蓝253短信验证码接口接入常见问题

    1.登录https://zz.253.com/site/login.html 2.获取接口API账号,密码:选择任意产品>激活>企业认证(上传公司营业执照)以及请求地址 demo接入账号( ...

  3. 全国通用标准化HTTP短信验证码接口,接入从未如此简单

    熟练掌握接口对接是一个程序猿的基本功,短信验证码接口作为企业商用最常见也是用的最多的一个接口,能够快速的接入当然是可以省下不少的时间啦!下面给大家介绍一个简单快速的接入方法啦! 验证码的前端代码很简单 ...

  4. php短信接口加密_PHP短信接口、PHP短信验证码接口源码

    PHP短信接口.PHP短信验证码接口源码 时间:2016-06-13 11:53 来源:原创 作者:admin PHP短信接口文档源码,PHP发短信接口,PHP在线发短信,PHP微信发短信接口 /* ...

  5. 【转载】C语言,利用网络短信验证码接口实现手机短信发送

    利用网络短信验证码接口实现手机短信发送 (历史代码,贴出学习) resource.h //resource.h//{{NO_DEPENDENCIES}} // Microsoft Visual C++ ...

  6. Httpclient调用短信验证码接口

    一.简介 HttpClient是Apache Jakarta Common下的子项目,用来提供高效的.最新的.功能丰富的支持HTTP协议的客户端编程工具包,并且它支持HTTP协议最新的版本和建议.Ht ...

  7. 如何防止短信验证码接口、登录注册入口被恶意调用攻击?

    目录 前言 1.短信验证码是什么? 2.为什么要对短信验证码进行防护? 3.有哪些常见的防护手段? 4.这些防护手段有没有用呢,到底该如何选择? 5.结语 前言 最近遇到一个关于防止短信验证码被刷的问 ...

  8. 短信验证码接口的应用场景和优势

    短信验证码接口是常用于网络平台的一种短信功能接口,它在用户注册登录.密码找回.账户变更.确认支付.活动认证等场景都会应用到,短信接口作为网络平台与用户之间重要交互手段,凭借其速度快.到达率高.安全性好 ...

  9. 如何防止恶意攻击短信验证码接口

    如何防止恶意攻击短信验证码接口 1 自研技术 2 自研验证码被破解怎么办? 3 所有图形验证码都被破解怎么办? 1 自研技术 1.手机号码限制:限制单个手机号码每天的最大发送次数.超过次数不能发送短信 ...

  10. java防止注册刷短信攻击_java面试(1)如何防止恶意攻击短信验证码接口

    防止恶意攻击短信验证码接口方法 1.手机号码限制:限制单个手机号码每天的最大发送次数.超过次数不能发送短信,可以考虑将手机号码加入黑名单,禁止1天. 2.短信发送时间间隔限制:限制同一个手机号码重复发 ...

最新文章

  1. Java程序员必须了解的JVM性能调优知识,全都在这里了
  2. Java assert
  3. iPhoneX适配随笔
  4. Hibernate Collection乐观锁定
  5. 从mysql取出数据封装成json中遇到特殊字符自动转成unicode解决方案
  6. ElasticSearch启动报错curl: (7) Failed connect to 172.19.128.56:9200; 拒绝连接---ElasticSearch工作笔记029
  7. 计算机科学班会,计算机系主题班会制度
  8. android studio - 解决Android Studio不停的Indexing的问题
  9. Java变量声明在循环体内还是循环体外,你用哪一个?
  10. MyBatis学习笔记01
  11. 19.go fix 和 go tool fix
  12. Homestead安装 PHP Redis 扩展
  13. sqlplus连接Oracle的正确语法
  14. 登录处理php页面,登录处理页面
  15. 音乐播放微信小程序基于node.js后台
  16. java 按拼音模糊搜索汉字_C#中拼音模糊匹配汉字智能搜索
  17. 免费公网动态IP方案
  18. 日本流行语------收录
  19. 目录服务器的互联网标准协议,2014年4月自学考试《互联网及其应用》试题
  20. 内存泄漏的原因及解决方法

热门文章

  1. prayaya v3-国产神操作系统
  2. http报文格式详解!
  3. 修改屏幕分辨率比例,4*3拼接屏 21:9 比例,大屏项目拼接适配屏解决方案
  4. Building Trustworthy Semantic Webs
  5. 阳振坤:OceanBase 数据库七亿 tpmC 的关键技术
  6. 《VMware vSphere 6.0虚拟化架构实战指南》——1.2 软件定义数据中心介绍
  7. android手机向电脑传输文件,手机怎么用数据线连接电脑传输文件
  8. 树莓派小车C语言循迹,自动循迹小车_单片机/STM32/树莓派/Arduino/开发板创意项目-聚丰项目-电子发烧友网...
  9. Oracle ERP 仓库(inventory) 词汇
  10. 十:javaee会议管理系统实现过程之会议室管理功能的代码(完整详细有注释)