2018-10-18【插件分析】java接入短信验证码功能

今天公司提出一个需求,要在现有项目上收集注册用户的真实手机号,由于之前没有接触过这一块,只能寻求度娘的帮助,经过一天的努力,终于完成了,现整理记录下已备查阅。

1 解决方案:在注册时要求用户进行手机验证。

2 寻找短信供应商:由于对这一块不是太懂,大学同学推荐一家他们公司在用的给我。

3 代码实现

  首先到互亿无线短信平台注册一个帐号,并登录到用户中心,选验证码模块下载接口文档,文档下载下来是一个压缩包,我们项目是用java的jsp开发的,直接找到目录DEMO/JSP

  提示:开始之前先看一下官方对接说明文档

  第一步 把前端html代码整合到注册页面

  html 代码:


<form action="reg.jsp" method="post" name="formUser" onSubmit="return register();">

<table width="100%"  border="0" align="left" cellpadding="5" cellspacing="3">

<tr>

<td align="right">手机<td>

<input id="mobile" name="mobile" type="text" size="25" class="inputBg" /><span style="color:#FF0000"> *</span>

        </tr>

  <tr>

    <td align="right">验证码</td>

    <td>

    <input type="text" name="gd_code" class="inputBg" size="25" id="gd_code" onkeyup="value=value.replace(/[^\d]/g,'')" placeholder="请输入正确的验证码">

    <span>&nbsp;<img src="code.jsp" onClick="javascript:this.src=this.src+'?date='+Date();" ></span>

    </td>

        </tr>

<tr>

<td align="right">手机验证码</td>

<td align="left">

<input type="text"  name="mobile_code" class="inputBg" size="25" />

<input id="zphone" type="button" value=" 获取手机验证码 " style="width: 120px"  onClick="get_mobile_code()">

</td>

</tr>

</table>

</form>

javascript代码

<script language="javascript">

function get_mobile_code(){

        $.post('sms.jsp', {mobile:jQuery.trim($('#mobile').val()),send_code:$("#gd_code").val()}, function(msg) {

            alert(jQuery.trim(unescape(msg)));

if(msg=='提交成功'){

RemainTime();

}else{

location.reload();

}

        });

};

var iTime = 59;

var Account;

function RemainTime(){

document.getElementById('zphone').disabled = true;

var iSecond,sSecond="",sTime="";

if (iTime >= 0){

iSecond = parseInt(iTime%60);

iMinute = parseInt(iTime/60)

if (iSecond >= 0){

if(iMinute>0){

sSecond = iMinute + "分" + iSecond + "秒";

}else{

sSecond = iSecond + "秒";

}

}

sTime=sSecond;

if(iTime==0){

clearTimeout(Account);

sTime='获取手机验证码';

iTime = 59;

document.getElementById('zphone').disabled = false;

}else{

Account = setTimeout("RemainTime()",1000);

iTime=iTime-1;

}

}else{

sTime='没有倒计时';

}

document.getElementById('zphone').value = sTime;

}

</script>

第一步 把后端jsp代码整合到程序逻辑中。

注意:把code.jsp sms.jsp这两个文件要上传到项目路径下

使用 HttpURLConnection请求短信接口就行了

String postUrl = "http://106.ihuyi.cn/webservice/sms.php?method=Submit";

int mobile_code = (int)((Math.random()*9+1)*100000); //获取随机数

String account = "用户名"; //查看用户名是登录用户中心->验证码短信->产品总览->APIID

String password = "密码";  //查看密码请登录用户中心->验证码短信->产品总览->APIKEY

String mobile = request.getParameter("mobile");

String content = new String("您的验证码是:" + mobile_code + "。请不要把验证码泄露给其他人。");

String send_code = request.getParameter("send_code");

String session_code = (String)session.getAttribute("randStr");

// 此处验证码仅限于纯数字比对

if (Integer.parseInt(send_code) != Integer.valueOf(session_code)) {

String message = new String("请输入正确的验证码");

out.println(message);

return;

}

try {

URL url = new URL(postUrl);

HttpURLConnection connection = (HttpURLConnection) url.openConnection();

connection.setDoOutput(true);//允许连接提交信息

connection.setRequestMethod("POST");//网页提交方式“GET”、“POST”

connection.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");

connection.setRequestProperty("Connection", "Keep-Alive");

StringBuffer sb = new StringBuffer();

sb.append("account="+account);

sb.append("&password="+password);

sb.append("&mobile="+mobile);

sb.append("&content="+content);

OutputStream os = connection.getOutputStream();

os.write(sb.toString().getBytes());

os.close();

String line, result = "";

BufferedReader in = new BufferedReader(new InputStreamReader(connection.getInputStream(), "utf-8"));

while ((line = in.readLine()) != null) {

result += line + "\n";

}

in.close();

out.println(result);

} catch (IOException e) {

e.printStackTrace(System.out);

}

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,332评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,508评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,812评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,607评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,728评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,919评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,071评论 3 410
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,802评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,256评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,576评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,712评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,389评论 4 332
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,032评论 3 316
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,798评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,026评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,473评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,606评论 2 350

推荐阅读更多精彩内容