网易云信短信接口java,调用网易云短信验证码接口Demo
最近在开发新的项目,因为需要使用验证码验证这个功能。我选择的是 网易云 的验证码接口。免费使用20条。并且在正式使用的过程中,对比了很多家以后,感觉还是他家的便宜。因为随着你购买的短信包数量的增加,价钱会相应的降低,下发的效率挺高的。
官方给出的demo已经是很完美了,但是我总有中使用最新插件的强迫症,随着插件的更新,可能有些函数已经被废弃或者将要废弃。给出我写的一个demo。
SendCode.java (调用成功以后,返回的json串中,obj字段对应的值即下发的内容)
public class SendCode {
public static String send(String mobile) throws Exception {
CloseableHttpClient httpClient = HttpClientBuilder.create().build();
HttpPost httpPost = new HttpPost(NeteaseConsts.SERVER_URL);
String curTime = String.valueOf((new Date()).getTime() / 1000L);
String nonce = CreateUUID.getUUID();
String checkSum = CheckSumBuilder.getCheckSum(NeteaseConsts.APP_SECRET, nonce, curTime);
// 设置请求的header
httpPost.addHeader("AppKey", NeteaseConsts.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 nvps = new ArrayList();
nvps.add(new BasicNameValuePair("mobile", mobile));
nvps.add(new BasicNameValuePair("codeLen", NeteaseConsts.CODELEN));
httpPost.setEntity(new UrlEncodedFormEntity(nvps, "utf-8"));
// 执行请求
HttpResponse response = httpClient.execute(httpPost);
String resultStr = EntityUtils.toString(response.getEntity(), "utf-8");
if (!StringUtils.isEmpty(resultStr)) {
JsonObject resultData = new JsonParser().parse(resultStr).getAsJsonObject();
String code = resultData.get("code").getAsString();
if ("200".equals(code)) {
String obj = resultData.get("obj").getAsString();
return obj;
}
}
return "";
}
}
CheckSumBuilder.java(官方给出的sha1加密方案,已经是写好的)
public class CheckSumBuilder {
public 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' };
}
NeteaseConsts.java (自己写的静态类,专门放置一些固定参数)
public class NeteaseConsts {
public static final String SERVER_URL = "https://api.netease.im/sms/sendcode.action";
public static final String APP_KEY = "XXXXXXXXXXXXXXXXXXXXXXXXX";
public static final String APP_SECRET = "XXXXXXXXXXXXXXX";
public static final String CODELEN = "6";
}
pom.xml(搭配的gson版本,以及httpcore、httpclient版本信息)
com.google.code.gson
gson
2.8.1
org.apache.httpcomponents
httpcore
4.4.6
org.apache.httpcomponents
httpclient
4.5.3
0
相关
网易云信短信接口java,调用网易云短信验证码接口Demo相关推荐
- java发送网易云短信验证码(语音和短信)
java发送网易云短信验证码(语音和短信) 1,先拷贝架包 commons-codec commons-codec 1.10 org.apache.httpcomponents httpclient ...
- java实现网易云短信接口
httpclient-4.3.6.jar和httpcore-4.3.3.jar jar包 首先去网易云注册账号得到分配的app key 和 App Secret 开通短信有20条试用.使用的是htt ...
- Java调用阿里云短信接口,发送短信
Java调用阿里云短信接口,发送短信 1.短信服务这个很简单,只需要知道accessKeyId(AK).accessKeySecret(SK).短信签名.短信模板即可. 2.域名和产品名称是固定的,使 ...
- 基于网易云短信接口开发
开发流程: 生成效验 发送验证码 短信验证 一.生成CheckSum校验 import java.security.MessageDigest; /*** 网易云短信工具类* @author dayu ...
- 阿里云(短信验证)。。。。网易云短信验证
首先是根据登陆阿里云官网 点击控制台-使用支付宝登录-搜索短信服务-在右上角找到短信操作服务指南-按照里面的步骤进行就可以了 网易云短信验证 语言验证 登录网易网址: https://netease. ...
- 网易云 短信验证码+验证+tp5
废话不说 直接上代码 PHP部分 1.ServerAPI.php(这是网易云短信文档里面的代码,直接复制存在本地然后改了一些 仅供参考) <?php /*** Created by PhpSto ...
- 微信小程序调用网易云音乐接口
微信小程序调用网易云音乐接口 前段时间QQ音乐的调用接口不能用了,给大家整理了一个网易云音乐的调用接口. 1.API接口: API接口地址 2.访问连接地址: http://neteasecloudm ...
- 个人微信api接口java调用代码
个人微信api接口java调用代码 1.微信好友收发消息 /** * 给微信好友发消息 * @author wechatno:tangjinjinwx * ...
- 关于JAVA调用企业微信审批流程的接口
关于JAVA调用企业微信审批流程的接口 具体代码在最下面前半部分主要讲配置 第一步获取企业的获取access_token 参数: 1. corpid 公司的id 2. corpsecret 公司用的s ...
最新文章
- SQL Server 2014聚集列存储索引
- ios 处理WKContentView的crash
- python excel取数 生成报告_python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告(二)...
- 高级Java开发人员的十大书籍
- 存储控制器wwn号_AUTOSAR学习笔记之存储
- “Word自动更改后的内容保存到通用文档模板上。是否加载该模板?“的解决办法...
- APUE读书笔记-04文件和目录(5)
- LIRe 源代码分析 3:基本接口(ImageSearcher)
- golang 包管理工具
- C# Graphics 透明 gif 进度条
- 最近开发了一个向QQ好友自动发送消息的程序
- 今天你的人生做减法了吗?
- FcaNet: Frequency Channel Attention Networks
- 【矩阵论】线性空间与线性变换(1)
- Google Chrome自定义新标签页
- 分布式一致性协议Raft,以及难搞的Paxos
- win10自动聚焦无法更换壁纸
- 给定一个完全循环赛的比赛结果,其中n个队伍两两比赛一次。每场比赛以一方胜出或者平局结束。设计一个算法,把n个队伍排序,序列中每个队伍都不曾输给紧随其后的那个队伍。说明该算法的时间效率类型。
- 谷粒学院订单管理 server-order 模块
- gcc编译程序的过程
热门文章
- EfficientDet论文解读
- INFO: Attempting to connect to: http://192.168.xx.xx:8080/v1 ERROR: http://192.168.xx.xx:8080/v1 is
- xbel文档_什么是.recently-used.xbel?如何永久删除它?
- Python入门(九)正则
- html5网站粒子时钟,利用HTML5实现SVG多边形粒子时钟动画特效
- ubuntu 下达建eCos开发环境
- SUNDE桌面云推动班班通工程建设步伐
- 解决物理机和kvm虚拟机鼠标不同步问题
- 一个平凡的外国人,却对中国大爱无疆
- 【FPGA-Spirit_V2】小精灵V2开发板初使用