挑选
优质的文章,及时送达。
作者:classabcd
链接:blog.csdn.net/classabcd/article/details/82464582
1.手机验证码的构造:用随机对象生成需要的随机数作为验证码,比如4位验证码:1000到9999之间的随机数;
2.使用接口将手机号码和验证码数据发送到短信平台,然后短信平台将验证码发送到建立的手机号码。接口参数一般包括:目标手机号、随机验证码(或包含过期时间)、平台接口地址、平台密码;
3.保存接口返回的信息(通常是json文本数据,然后转换成json对象格式);
4.将手机号码验证码和操作时间存储在会话中,以便以后验证;
5.接收用户填写的验证码等数据;
6.比较提交的验证码与会话中的验证码是否一致,判断提交动作是否在有效期内;
7.如果验证码正确且在有效期内,则请求通过,并处理相应的业务。
首先,添加一个jar包,它将被工具类使用。
& lt!-第二滴云的jar包-& gt;
& lt;依赖性& gt
& lt;groupId & gtcommons-编解码器& lt/groupId & gt;
& lt;artifactId & gtcommons-编解码器& lt/artifact id & gt;
& lt;版本& gt1.11 & lt/version & gt;
& lt;/dependency & gt;第二,我这里只是写一个简单的短信验证功能,如果用其他语音验证的话。。。。以此类推,需要去二滴云官方下载文档。这是一个准备用来存储一些参数的配置文件。
其次,编写http请求工具类
公共类httputil
{
/*
*构造通用参数timestamp、sig和resp datatype
* @ return
*/
公共静态字符串createcommonparam
{
/timestamp
简单日期格式SDF =新的简单日期格式(” yyyymmdd hhmmss “);
String timestamp = SDF . format(新日期);
//Signature
string SIG = digestutils . MD 5 hex(config . account _ sid+config . auth _ token+timestamp);
return ” & amp;时间戳=” +时间戳+” & amp;SIG = “+SIG+” & amp;respDataType=” + Config。RESP数据类型;
}
* * post请求
*
* @param url
*函数和操作
* @ param body
* @ throws io exception
*/
public static String post(String URL,String body)
{
system . out . println(” URL:”+system . line separator+URL);
system . out . println(” body:”+system . line separator+body);
String result = ” “;
try
{
output streamwriter out =;
buffered reader in =;
URL real URL = new URL(URL);
URL connection conn = real URL . open connection;
/设置连接参数
conn . setdoooutput(true);
conn . setdoinput(true);
conn . setconnecttimeout(5000);
conn . setreadtimeout(20000);
conn . setrequestproperty(” Content-Type “,” application/x-www-form-urlencoded “);
//提交数据
out =新输出streamwriter (conn.get输出流,“UTF-8”);
out . write(body);
out . flush;
/读取返回的数据
in = new buffered reader(conn . getinputstream,“UTF-8”);
String line = ” “;
boolean first line = true;//读取第一行不换行
while ((line = in.readLine)!=)
{
if(first line)
{
first line = false;
} else
{
result+= system . line separator;
}
result+= line;
}
} catch(异常e)
{
e . printstacktrace;
}
返回结果;
}
* *
*回调测试工具方法
*
* @ param URL
* @ param reqstr
* @ return
public static String post huidiao(String URL,String body)
{
String result = ” “;
try
{
output streamwriter out =;
buffered reader in =;
URL real URL = new URL(URL);
URL connection conn = real URL . open connection;
/设置连接参数
conn . setdoooutput(true);
conn . setdoinput(true);
conn . setconnecttimeout(5000);
conn . setreadtimeout(20000);
/Submit data
out = new output streamwriter(conn . get output stream,“UTF-8”);
out . write(body);
out . flush;
/读取返回的数据
in = new buffered reader(conn . getinputstream,“UTF-8”);
String line = ” “;
boolean first line = true;//读取第一行不换行
while ((line = in.readLine)!=)
{
if(first line)
{
first line = false;
} else
{
result+= system . line separator;
}
result+= line;
}
} catch(异常e)
{
e . printstacktrace;
}
返回结果;
}
}三、四位数的生成方法
公共静态字符串runNumber {
String str = ” abcdefghijklmnopqrstuvwxyz 0123456789 “;
StringBuilder = new StringBuilder(4);
for(int I = 0;我& lt4;i++)
{
char ch = str . charat(new random . nextint(str . length));
. append(ch);
}
system . out . println( . tostring);
String code = . tostring;
返回代码;
}4。执行方法,传输就成功了。
public类industry S
{
private static String operation = “/industry S/send S “;
私有静态字符串accountSid = Config。ACCOUNT _ SID
私有静态字符串to = ” 15342349382
私有静态字符串短信内容= “[小淘科技]登录验证码:{“+runNumber.toString+”},非本人操作请忽略此消息。”;
/*
*验证码通知短信
*/
公共静态void execute
{
String tmpS content =;
try {
tmpsContent = URL encoder . encode(S content,” UTF-8 “);
}catch(异常e){
}
String URL = Config。BASE_URL +操作;
String body = ” accounts id = “+accounts id+” & amp;to = “+to+” & amp;S content = “+tmpsContent
+httputil . createcommonparam;
/提交请求
String result = http util . post(URL,body);
system . out . println(” result:”+system . line separator+result);
}-END-
如果你看到这个,说明你喜欢这篇文章,拜托。同时,星(顶)本微信官方账号可以第一时间收到博文推送。
最近整理了一份面试资料《Ja技术栈学习手册》,内容涉及Ja技术、面试精选题、Spring Family Barrel、Nginx、S、微服务、数据库、数据结构、架构等。
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。