手机验证码java后台_JavaWeb之短信发送验证码

目前手机注册登录是时下非常流行的一种交互方式,出售短信包的平台以及对应的API有很多,这里只以其中一个为例,秒嘀

69f789e25818

image.png

Config.java

package test;

public class Config{

public static final String BASE_URL = "https://api.miaodiyun.com/20150822";

// 此参数在开发者注册后系统自动生成,去对应平台登录进行查看

public static final String ACCOUNT_SID = "91252829202f42ccb380369b886a481b";

// 此参数在开发者注册后系统自动生成,去对应平台登录进行查看

public static final String AUTH_TOKEN = "424a8c02ba794b3aabad9eb00c3e4db7";

public static final String RESP_DATA_TYPE = "json";

}

HttpUtil.java

package test;

import java.io.BufferedReader;

import java.io.InputStreamReader;

import java.io.OutputStreamWriter;

import java.net.URL;

import java.net.URLConnection;

import java.text.SimpleDateFormat;

import java.util.Date;

import org.apache.commons.codec.digest.DigestUtils;

public class HttpUtil

{

public static String createCommonParam()

{

SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");

String timestamp = sdf.format(new Date());

String sig = DigestUtils.md5Hex(Config.ACCOUNT_SID + Config.AUTH_TOKEN + timestamp);

return "&timestamp=" + timestamp + "&sig=" + sig + "&respDataType=" + Config.RESP_DATA_TYPE;

}

public static String post(String url, String body)

{

System.out.println("url:" + System.lineSeparator() + url);

System.out.println("body:" + System.lineSeparator() + body);

String result = "";

try

{

OutputStreamWriter out = null;

BufferedReader in = null;

URL realUrl = new URL(url);

URLConnection conn = realUrl.openConnection();

conn.setDoOutput(true);

conn.setDoInput(true);

conn.setConnectTimeout(5000);

conn.setReadTimeout(20000);

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

out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");

out.write(body);

out.flush();

in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));

String line = "";

boolean firstLine = true;

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

{

if (firstLine)

{

firstLine = false;

} else

{

result += System.lineSeparator();

}

result += line;

}

} catch (Exception e)

{

e.printStackTrace();

}

return result;

}

public static String postHuiDiao(String url, String body)

{

String result = "";

try

{

OutputStreamWriter out = null;

BufferedReader in = null;

URL realUrl = new URL(url);

URLConnection conn = realUrl.openConnection();

conn.setDoOutput(true);

conn.setDoInput(true);

conn.setConnectTimeout(5000);

conn.setReadTimeout(20000);

out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");

out.write(body);

out.flush();

in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));

String line = "";

boolean firstLine = true;

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

{

if (firstLine)

{

firstLine = false;

} else

{

result += System.lineSeparator();

}

result += line;

}

} catch (Exception e)

{

e.printStackTrace();

}

return result;

}

}

IndustrySMS.java

package test;

import java.net.URLEncoder;

import test.Config;

import test.HttpUtil;

public class IndustrySMS

{

private static String operation = "/industrySMS/sendSMS";

private static String accountSid = Config.ACCOUNT_SID;

// 要发送到的手机号码

private static String to = "13386895356";

// 对应模板信息,验证码可以选择随机生成

private static String smsContent = "【xxxxx】您的信验证码为123456,请在5分钟内使用";

/**

* 发送信息的方法

*/

public static void execute()

{

String tmpSmsContent = null;

try{

tmpSmsContent = URLEncoder.encode(smsContent, "UTF-8");

}catch(Exception e){

}

String url = Config.BASE_URL + operation;

String body = "accountSid=" + accountSid + "&to=" + to + "&smsContent=" + tmpSmsContent

+ HttpUtil.createCommonParam();

String result = HttpUtil.post(url, body);

System.out.println("result:" + System.lineSeparator() + result);

}

}

Test.java

package test;

public class Test{

public static void main(String[] args){

IndustrySMS.execute();

}

}

验证思路

将手机验证码存入session中,利用ajax请求获取发送的验证码,前台页面启动定时器,在60s内可以与从后台取得的验证码进行对比验证,超时后,将获取到的验证码清空

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值