JAVA开发短信验证码系统
来源:互联网 发布:php curl 查看请求头 编辑:程序博客网 时间:2024/05/17 01:07
我的GitHub地址 代码可以在这里下载我的Github点击打开链接
开发一个短信验证码系统,我们是需要去对接外部API的,那么在百度上搜一搜会出现很多,我用的某一家公司的API,为了防止说打广告,最后再放上公司名和链接。
对接一个短信API需要做什么工作呢,不同的API请求参数是不同的,下面以我使用的API参数为例。
这是请求的参数表,必选的是我们必须写上的,到时候我们会把他们拼接到请求地址中。
对于时间戳timestamp和Sig MD5加密我们会在下面使用java来进行处理
这边的ID和TOKEN等你注册以后使用自己的就可以了。
他的官网也给出了请求实例,我们可以参考。
---------------------------------------------------------------------------分割线------------------------------------------------------------
首先我们创建一个QueryUtil类,这个类是用来创建生成时间戳和MD5加密,并返回拼接的地址的字符串
/** * *发送验证码工具类 *QueryUtil *@author houzhiyang *@data 2017-7-12 15:41:12 *@version 1.0.0 */public class QueryUtil {public static String qureyArguments(String ACCOUNT_SID,String AUTH_TOKEN,String smsContent,String to){//时间戳String timestamp = getTimestamp();//签名验证String sig = MD5(ACCOUNT_SID,AUTH_TOKEN,timestamp);//地址参数拼接String str = "accountSid="+ACCOUNT_SID+"&smsContent="+smsContent+"&to="+to+"&playTimes=2"+"×tamp="+timestamp+"&sig="+sig;return str;}/** * 获取时间戳 * @return */public static String getTimestamp(){SimpleDateFormat format = new SimpleDateFormat("yyyyMMddHHmmss");return format.format(new Date());}public static String MD5(String... args){StringBuffer result = new StringBuffer();if(args==null||args.length==0){return "";}else{StringBuffer sb = new StringBuffer();for (String string : args) {sb.append(string);}System.out.println("编码前:\t"+sb.toString());MessageDigest digest;try {digest = MessageDigest.getInstance("MD5");byte[] bytes = digest.digest(sb.toString().getBytes());for (byte b : bytes) {String hex = Integer.toHexString(b&0xff);//16进制转换if(hex.length()==1){result.append("0"+hex);}else{result.append(hex);}}} catch (Exception e) {e.printStackTrace();}}return result.toString();}}
1.对于时间戳的设置,使用SimpleDateFormat类的format方法即可,他会返回String类型。
2.MD5加密 使用MessageDigest下的getInstance传入MD5参数获取一个实例,再将传入的参数使用digest方法获取一个byte数组。使用foreach遍历byte数组String hex = Integer.toHexString(b&0xff);//16进制转换 使用这句将其转换为16进制的MD5加密。
在建立一个产生随机数的类
/** * *类描述:随机数工具类 *RandomUtil *@author houzhiyang *@data 2017-7-12下午9:26:43 *@version 1.0.0 */public class RandomUtil {public static String getRandom(){String randNum = new Random().nextInt(1000000)+"";if(randNum.length()!=6){return getRandom();}return randNum;}}
最后建立主类GetPhoneMessage
/** * *获取短信验证码类 *GetPhoneMessage *@author houzhiyang *@data 2017-7-12 5:36:06 *@version 1.0.0 */public class GetPhoneMessage {//用户IDpublic static final String ACCOUNT_SID = "填入你申请账号的对应值";//密钥public static final String AUTH_TOKEN = "填入你申请账号的对应值";//请求地址前半部分public static final String BASE_URL = "https://api.miaodiyun.com/20150822/industrySMS/sendSMS";//随机数public static String randNum = RandomUtil.getRandom();//短信内容public static String smsContent = "按照你设置的模版内容填写,如不一样会报错";/** * 获取短信验证码 * @param to * @return */public static String getResult(String to){String args = QueryUtil.qureyArguments(ACCOUNT_SID, AUTH_TOKEN, smsContent, to);System.out.println(args);OutputStreamWriter out = null;InputStream in = null;BufferedReader br = null;StringBuffer sb = new StringBuffer();try {URL url = new URL(BASE_URL);URLConnection connection = url.openConnection();//打开链接connection.setDoOutput(true);connection.setDoInput(true);connection.setConnectTimeout(5000);//设置请求链接超时时间connection.setReadTimeout(10000);//设置读取结果超时//提交数据out = new OutputStreamWriter(connection.getOutputStream(),"UTF-8");out.write(args);out.flush();//读取返回数据in = connection.getInputStream();br = new BufferedReader(new InputStreamReader(in));String line = "";while((line =br.readLine())!= null){sb.append(line);}} catch (Exception e) {e.printStackTrace();}return sb.toString();}public static void main(String[] args) {System.out.println("验证码:"+randNum);System.out.println(getResult("这里传入你要测试的手机号码"));}}
我这边使用的是秒嘀云的API,他对于一个新注册的账号赠送了200条短信的体验,对于我们测试开发来说足够了,我的例子也是使用秒嘀云来进行的。不过账号需要小伙伴们自己注册了,因为我的条数已经被浪的差不多了,哈哈哈。
PS:在你注册后,进第一步去短信验证码的模版功能添加模版,因为没有模版是不能用的,模版也需要审核。如果你对接其他的API这些就按照别的网站的要求做。http://www.miaodiyun.com/
- JAVA开发短信验证码系统
- JAVA开发短信验证码系统
- MOB短信验证码开发
- 短信验证码功能开发
- java实现短信验证码
- java实现短信验证码
- Java调用短信验证码
- java发送短信验证码
- java短信验证码实现
- java 短信发送验证码
- java发送短信验证码
- Java实现短信验证码
- java实现短信验证码
- java 基于阿里大于(阿里云短信通讯)开发短信验证码
- iOS - ShareSDK 短信验证码开发记录
- android开发之短信验证码
- iOS开发——短信验证码
- Android 开发第一步 短信验证码登录
- Some python print
- 洛谷 P1031 均分纸牌
- 欢迎使用CSDN-markdown编辑器
- maven web 项目中启动报错java.lang.ClassNotFoundException: org.springframework.web.util.Log4jConfigListener
- easyui datagrid自定义按钮列,即最后面的操作列
- JAVA开发短信验证码系统
- Eclipse中使用svn
- 我们为什么要读书?
- 常用技巧(一)——尺取法
- three.js 3D坐标转化为2D屏幕坐标
- mysql零基础入门视频教程免费分享!
- unity初级入门:如何找到unity中支持的所有事件
- android插件化研究
- I