本文只是网易云信开发文档中的一个简单的例子,详情大家可以去看网易云信的开发手册。(后续可能会把这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基于网易云信实现手机短信验证相关推荐

  1. java+jsp如何实现发送手机短信验证登录

    我的qq  2038373094 1.借助第三方免费的sdk接口,下载java sdk http://smsow.zhenzikj.com/doc/sdk.html 下载后的SDK只包含一个jar文件 ...

  2. 利用java实现的一个发送手机短信的小例子

    今天闲来无事,在微博上看到一个关于用java实现的一个发送手机短信的程序,看了看,写的不太相信,闲的没事,把他整理下来,以后可能用得着 JAVA发送手机短信,流传有几种方法:(1)使用webservi ...

  3. java 发送短信例子_利用java实现的一个发送手机短信的小例子

    今天闲来无事,在微博上看到一个关于用java实现的一个发送手机短信的程序,看了看,写的不太相信,闲的没事,把他整理下来,以后可能用得着 JAVA发送手机短信,流传有几种方法:(1)使用webservi ...

  4. java实现的一个发送手机短信

    利用java实现的一个发送手机短信的小例子 JAVA发送手机短信,流传有几种方法:(1)使用webservice接口发送手机短信,这个可以使用sina提供的webservice进行发送,但是需要进行注 ...

  5. 基于阿里云的手机短信验证码和注册校验逻辑

    基于阿里云的手机短信验证码demo实现 1. 环境依赖 2. 页面表单 html 3. 校验与短信 js 4. 工具类 SmsUtils 5. 资源调用 Servlet 阿里云的短信平台:http:/ ...

  6. java实现手机短信验证全过程

    点个赞,看一看,好习惯!本文 GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了 3 个月总结的一线大厂 Java 面试总结,本 ...

  7. java手机短信验证,并存入redis中,验证码时效5分钟

    目录 1.注册发送短信账号一个账号 2.打开虚拟机,将redis服务端打开 3.创建springboot工程,导入相关依赖 4.写yml配置 5.创建controller层,并创建controller ...

  8. php中短信验证大致流程,实现php手机短信验证功能的基本思路

    现在很多网站为了避免用户烂注册,都在注册环节添加有手机短信验证功能,用户注册时需要短信验证码才可以,那么这种手机短信验证功能是如何实现的呢?其基本思路是什么呢?下面乐信小编就来为大家介绍下: 实现手机 ...

  9. php手机号码一分钟发送一次短信_如何实现php手机短信验证功能

    现在网站在建设网站时为了保证用户信息的真实性,往往会选择发短信给用户手机发验证码信息,只有通过验证的用户才可以注册,这样保证了用户的联系信息资料的100%的准确性 .今天笔者就跟大家分享一下如何实现p ...

最新文章

  1. Java调用ocx控件以及dll
  2. IDEA快捷键(修改成eclipse版)+Templates
  3. 静态网页制作html语言入门
  4. html 接收 图片流_Microsoft Flow 利用自动化工作流增强Power BI使用效率
  5. SQL Server 2008 R2——使用数字辅助表(master..spt_values)实现用计数字段对记录进行重复显示...
  6. 移动端REM布局方案
  7. java.lang.IllegalArgumentException: URLDecoder异常解决
  8. [专栏精选]Unity中编码Encoding脱坑指南
  9. raid5通常需要几块盘_磁盘阵列是什么东西,为什么需要阵列?
  10. 关于umask函数和creat函数
  11. 2020年上海将初步建成“泛在化、融合化、智敏化”智慧城市
  12. 获取服务器响应失效,从Web服务器获取响应时出现问题
  13. UE4官方文档链接记录
  14. 计算机兴趣小组学情分析,计算机兴趣小组计划、教案浅析.doc
  15. 223611-42-5,S-acetyl-PEG4-alcohol含有硫乙酰基的PEG连接剂
  16. 小米6线刷兼救砖_解账户锁_纯净刷机包_教程
  17. c语言error语句错误,【资料】C语言错误信息中文解释
  18. 双精度浮点数的取绝对值
  19. UML图解简单工厂模式工厂方法模式抽象工厂模式区别
  20. 程序员上班第一天必用工具,git速查表

热门文章

  1. Java 生成二维码 zxing生成二维码 条形码 服务端生成二维码 Java生成条形码
  2. 汽车行业数据防泄露解决方案
  3. 苹果笔记本计算机管理员删除,如何删除一个管理员?
  4. 选择数据中心的位置,需要从这五大方面考虑
  5. gis与计算机科学之间的联系,GIS地理信息系统课程论文 地理信息系统与其他学科的关系及应用前景...
  6. VB操作EXCEL方法汇总
  7. A. 【UNR #2】积劳成疾
  8. python控制excel选择区域_python针对excel的操作技巧
  9. Web前端开发必不可少的10个开源框架
  10. 世界十大顶级黑客教父