Java基于网易云信实现手机短信验证
本文只是网易云信开发文档中的一个简单的例子,详情大家可以去看网易云信的开发手册。(后续可能会把这demo应用到web项目的登录中去,到时候会把GitHub链接贴过来)
网易云信网址
首先进入网易云信,注册账号,然后进入管理中心,创建一个应用,创建的信息可以随便填。
在未开通功能中找到短信,选择申请试用,会有20条免费短信使用。
开通后进入短信模板管理,选择验证码模板,创建模板,模板格式会有提示,这里就不提了。创建完后,需要一段时间审核大概几个小时。
进入appkey管理,appkey和appsecret很重要,后面会用到。
上面的准备工作完成了,接下来就是编码阶段,代码网易云信的开发文档中也有。这里只是自己跑通了记录一下。
创建一个普通的Java项目即可。一共有两个类
项目结构如下:
CheckSumBuilder.java
import java.security.MessageDigest;
//该类无需修改
public class CheckSumBuilder {// 计算并获取CheckSumpublic static String getCheckSum(String appSecret, String nonce, String curTime) {return encode("sha1", appSecret + nonce + curTime);}// 计算并获取md5值public static String getMD5(String requestBody) {return encode("md5", requestBody);}private static String encode(String algorithm, String value) {if (value == null) {return null;}try {MessageDigest messageDigest = MessageDigest.getInstance(algorithm);messageDigest.update(value.getBytes());return getFormattedText(messageDigest.digest());} catch (Exception e) {throw new RuntimeException(e);}}private static String getFormattedText(byte[] bytes) {int len = bytes.length;StringBuilder buf = new StringBuilder(len * 2);for (int j = 0; j < len; j++) {buf.append(HEX_DIGITS[(bytes[j] >> 4) & 0x0f]);buf.append(HEX_DIGITS[bytes[j] & 0x0f]);}return buf.toString();}private static final char[] HEX_DIGITS = {'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', 'a', 'b', 'c', 'd', 'e', 'f'};
}
SendCode.java
import org.apache.http.HttpResponse;
import org.apache.http.NameValuePair;
import org.apache.http.client.HttpClient;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.HttpClientBuilder;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;import java.util.ArrayList;
import java.util.Date;
import java.util.List;/*** 发送验证码** @author liuxuanlin 需要修改的地方: 1.APP_KEY替换为你创建应用的APP_KEY 2.APP_SECRET替换为对应的APP_SECRET* 3.短信模板ID修改为你创建的短信模板的ID 4.手机号替换为接收短信手机号*/
public class SendCode {// 发送验证码的请求路径URL(这里实现的是短信验证码,所以url不用改)private static final String SERVER_URL = "https://api.netease.im/sms/sendcode.action";// 网易云信分配的账号,请替换你在管理后台应用下申请的Appkeyprivate static final String APP_KEY = "你的APP_KEY";// 网易云信分配的密钥,请替换你在管理后台应用下申请的appSecretprivate static final String APP_SECRET = "你的APP_SECRET";// 随机数(不用改)private static final String NONCE = "123456";// 短信模板IDprivate static final String TEMPLATEID = "你的短信模板ID";// 手机号private static final String MOBILE = "接收短信手机号";// 验证码长度,范围4~10,默认为4(验证码长度看个人)private static final String CODELEN = "6";public static void main(String[] args) throws Exception {HttpClient httpClient = HttpClientBuilder.create().build();HttpPost httpPost = new HttpPost(SERVER_URL);String curTime = String.valueOf((new Date()).getTime() / 1000L);/** 参考计算CheckSum的java代码,在上述文档的参数列表中,有CheckSum的计算文档示例*/String checkSum = CheckSumBuilder.getCheckSum(APP_SECRET, NONCE, curTime);// 设置请求的headerhttpPost.addHeader("AppKey", APP_KEY);httpPost.addHeader("Nonce", NONCE);httpPost.addHeader("CurTime", curTime);httpPost.addHeader("CheckSum", checkSum);httpPost.addHeader("Content-Type", "application/x-www-form-urlencoded;charset=utf-8");// 设置请求的的参数,requestBody参数List<NameValuePair> nvps = new ArrayList<NameValuePair>();/** 1.如果是模板短信,请注意参数mobile是有s的,详细参数配置请参考“发送模板短信文档”* 2.参数格式是jsonArray的格式,例如 "['13888888888','13666666666']"* 3.params是根据你模板里面有几个参数,那里面的参数也是jsonArray格式*/nvps.add(new BasicNameValuePair("templateid", TEMPLATEID));nvps.add(new BasicNameValuePair("mobile", MOBILE));nvps.add(new BasicNameValuePair("codeLen", CODELEN));httpPost.setEntity(new UrlEncodedFormEntity(nvps, "utf-8"));// 执行请求HttpResponse response = httpClient.execute(httpPost);/** 1.打印执行结果,打印结果一般会200、315、403、404、413、414、500* 2.具体的code有问题的可以参考官网的Code状态表*/System.out.println(EntityUtils.toString(response.getEntity(), "utf-8"));}
}
还需要添加jar包依赖,jar包放在网盘
链接: https://pan.baidu.com/s/1LGqKwWIGFRhxhH51VLkUIA
提取码: dqhj
最后运行sendcode类的main方法就行了
Java基于网易云信实现手机短信验证相关推荐
- java+jsp如何实现发送手机短信验证登录
我的qq 2038373094 1.借助第三方免费的sdk接口,下载java sdk http://smsow.zhenzikj.com/doc/sdk.html 下载后的SDK只包含一个jar文件 ...
- 利用java实现的一个发送手机短信的小例子
今天闲来无事,在微博上看到一个关于用java实现的一个发送手机短信的程序,看了看,写的不太相信,闲的没事,把他整理下来,以后可能用得着 JAVA发送手机短信,流传有几种方法:(1)使用webservi ...
- java 发送短信例子_利用java实现的一个发送手机短信的小例子
今天闲来无事,在微博上看到一个关于用java实现的一个发送手机短信的程序,看了看,写的不太相信,闲的没事,把他整理下来,以后可能用得着 JAVA发送手机短信,流传有几种方法:(1)使用webservi ...
- java实现的一个发送手机短信
利用java实现的一个发送手机短信的小例子 JAVA发送手机短信,流传有几种方法:(1)使用webservice接口发送手机短信,这个可以使用sina提供的webservice进行发送,但是需要进行注 ...
- 基于阿里云的手机短信验证码和注册校验逻辑
基于阿里云的手机短信验证码demo实现 1. 环境依赖 2. 页面表单 html 3. 校验与短信 js 4. 工具类 SmsUtils 5. 资源调用 Servlet 阿里云的短信平台:http:/ ...
- java实现手机短信验证全过程
点个赞,看一看,好习惯!本文 GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了 3 个月总结的一线大厂 Java 面试总结,本 ...
- java手机短信验证,并存入redis中,验证码时效5分钟
目录 1.注册发送短信账号一个账号 2.打开虚拟机,将redis服务端打开 3.创建springboot工程,导入相关依赖 4.写yml配置 5.创建controller层,并创建controller ...
- php中短信验证大致流程,实现php手机短信验证功能的基本思路
现在很多网站为了避免用户烂注册,都在注册环节添加有手机短信验证功能,用户注册时需要短信验证码才可以,那么这种手机短信验证功能是如何实现的呢?其基本思路是什么呢?下面乐信小编就来为大家介绍下: 实现手机 ...
- php手机号码一分钟发送一次短信_如何实现php手机短信验证功能
现在网站在建设网站时为了保证用户信息的真实性,往往会选择发短信给用户手机发验证码信息,只有通过验证的用户才可以注册,这样保证了用户的联系信息资料的100%的准确性 .今天笔者就跟大家分享一下如何实现p ...
最新文章
- Java调用ocx控件以及dll
- IDEA快捷键(修改成eclipse版)+Templates
- 静态网页制作html语言入门
- html 接收 图片流_Microsoft Flow 利用自动化工作流增强Power BI使用效率
- SQL Server 2008 R2——使用数字辅助表(master..spt_values)实现用计数字段对记录进行重复显示...
- 移动端REM布局方案
- java.lang.IllegalArgumentException: URLDecoder异常解决
- [专栏精选]Unity中编码Encoding脱坑指南
- raid5通常需要几块盘_磁盘阵列是什么东西,为什么需要阵列?
- 关于umask函数和creat函数
- 2020年上海将初步建成“泛在化、融合化、智敏化”智慧城市
- 获取服务器响应失效,从Web服务器获取响应时出现问题
- UE4官方文档链接记录
- 计算机兴趣小组学情分析,计算机兴趣小组计划、教案浅析.doc
- 223611-42-5,S-acetyl-PEG4-alcohol含有硫乙酰基的PEG连接剂
- 小米6线刷兼救砖_解账户锁_纯净刷机包_教程
- c语言error语句错误,【资料】C语言错误信息中文解释
- 双精度浮点数的取绝对值
- UML图解简单工厂模式工厂方法模式抽象工厂模式区别
- 程序员上班第一天必用工具,git速查表
热门文章
- Java 生成二维码 zxing生成二维码 条形码 服务端生成二维码 Java生成条形码
- 汽车行业数据防泄露解决方案
- 苹果笔记本计算机管理员删除,如何删除一个管理员?
- 选择数据中心的位置,需要从这五大方面考虑
- gis与计算机科学之间的联系,GIS地理信息系统课程论文 地理信息系统与其他学科的关系及应用前景...
- VB操作EXCEL方法汇总
- A. 【UNR #2】积劳成疾
- python控制excel选择区域_python针对excel的操作技巧
- Web前端开发必不可少的10个开源框架
- 世界十大顶级黑客教父