最近在开发新的项目,因为需要使用验证码验证这个功能。我选择的是 网易云 的验证码接口。免费使用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相关推荐

  1. java发送网易云短信验证码(语音和短信)

    java发送网易云短信验证码(语音和短信) 1,先拷贝架包 commons-codec commons-codec 1.10 org.apache.httpcomponents httpclient ...

  2. java实现网易云短信接口

    httpclient-4.3.6.jar和httpcore-4.3.3.jar jar包 首先去网易云注册账号得到分配的app key 和 App Secret  开通短信有20条试用.使用的是htt ...

  3. Java调用阿里云短信接口,发送短信

    Java调用阿里云短信接口,发送短信 1.短信服务这个很简单,只需要知道accessKeyId(AK).accessKeySecret(SK).短信签名.短信模板即可. 2.域名和产品名称是固定的,使 ...

  4. 基于网易云短信接口开发

    开发流程: 生成效验 发送验证码 短信验证 一.生成CheckSum校验 import java.security.MessageDigest; /*** 网易云短信工具类* @author dayu ...

  5. 阿里云(短信验证)。。。。网易云短信验证

    首先是根据登陆阿里云官网 点击控制台-使用支付宝登录-搜索短信服务-在右上角找到短信操作服务指南-按照里面的步骤进行就可以了 网易云短信验证 语言验证 登录网易网址: https://netease. ...

  6. 网易云 短信验证码+验证+tp5

    废话不说 直接上代码 PHP部分 1.ServerAPI.php(这是网易云短信文档里面的代码,直接复制存在本地然后改了一些 仅供参考) <?php /*** Created by PhpSto ...

  7. 微信小程序调用网易云音乐接口

    微信小程序调用网易云音乐接口 前段时间QQ音乐的调用接口不能用了,给大家整理了一个网易云音乐的调用接口. 1.API接口: API接口地址 2.访问连接地址: http://neteasecloudm ...

  8. 个人微信api接口java调用代码

    个人微信api接口java调用代码 1.微信好友收发消息         /**      * 给微信好友发消息      * @author wechatno:tangjinjinwx      * ...

  9. 关于JAVA调用企业微信审批流程的接口

    关于JAVA调用企业微信审批流程的接口 具体代码在最下面前半部分主要讲配置 第一步获取企业的获取access_token 参数: 1. corpid 公司的id 2. corpsecret 公司用的s ...

最新文章

  1. SQL Server 2014聚集列存储索引
  2. ios 处理WKContentView的crash
  3. python excel取数 生成报告_python+requests+excel+unittest+ddt接口自动化数据驱动并生成html报告(二)...
  4. 高级Java开发人员的十大书籍
  5. 存储控制器wwn号_AUTOSAR学习笔记之存储
  6. “Word自动更改后的内容保存到通用文档模板上。是否加载该模板?“的解决办法...
  7. APUE读书笔记-04文件和目录(5)
  8. LIRe 源代码分析 3:基本接口(ImageSearcher)
  9. golang 包管理工具
  10. C# Graphics 透明 gif 进度条
  11. 最近开发了一个向QQ好友自动发送消息的程序
  12. 今天你的人生做减法了吗?
  13. FcaNet: Frequency Channel Attention Networks
  14. 【矩阵论】线性空间与线性变换(1)
  15. Google Chrome自定义新标签页
  16. 分布式一致性协议Raft,以及难搞的Paxos
  17. win10自动聚焦无法更换壁纸
  18. 给定一个完全循环赛的比赛结果,其中n个队伍两两比赛一次。每场比赛以一方胜出或者平局结束。设计一个算法,把n个队伍排序,序列中每个队伍都不曾输给紧随其后的那个队伍。说明该算法的时间效率类型。
  19. 谷粒学院订单管理 server-order 模块
  20. gcc编译程序的过程

热门文章

  1. EfficientDet论文解读
  2. INFO: Attempting to connect to: http://192.168.xx.xx:8080/v1 ERROR: http://192.168.xx.xx:8080/v1 is
  3. xbel文档_什么是.recently-used.xbel?如何永久删除它?
  4. Python入门(九)正则
  5. html5网站粒子时钟,利用HTML5实现SVG多边形粒子时钟动画特效
  6. ubuntu 下达建eCos开发环境
  7. SUNDE桌面云推动班班通工程建设步伐
  8. 解决物理机和kvm虚拟机鼠标不同步问题
  9. 一个平凡的外国人,却对中国大爱无疆
  10. 【FPGA-Spirit_V2】小精灵V2开发板初使用