网易云信短信接口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

相关

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/550975.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php+页面加载进度,基于jQuery实现模拟页面加载进度条_jquery

因为我们无法通过任何方法获取整个页面的大小和当前加载了多少&#xff0c;所以想制作一个加载进度条的唯一办法就是模拟。那要怎么模拟呢&#xff1f;我们知道&#xff0c;页面是从上往下执行的&#xff0c;也就是说我们可以大致估算出在页面的某个位置加载了多少&#xff0c;…

php eurl.axd,Http异常eurl.axd出错信息解决方法

您可能感兴趣的话题&#xff1a;IIS核心提示&#xff1a;在IIS6中同时启用了ASP.NET 2.0 和 ASP.NET 4.0 后&#xff0c;网站程序可能会出现如下错误&#xff1a;“ System.Web.HttpException: Path ‘//eurl.axd/‘ was not found. ”在IIS6中同时启用了ASP.NET 2.0 和 ASP.NE…

php radio js,如何使用JavaScript设置radio选中的示例

在页面数据绑定时&#xff0c;经常会遇到给radio设置选中&#xff0c;以下是我写的js方法&#xff0c;经测试可以使用。欢迎拍砖是否是否$(function(){$("#btn1").click(function(){$("input[namerdo1]").eq(0).attr("checked","checked&qu…

oracle 列 连续,oracle中某列连续相同值的记录数统计(一个简单的例子)

oracle中某列连续相同值的记录数统计(一个简单的例子) row_number() OVER (PARTITION BY COL1 ORDER BY COL2) 表示根据COL1分组&#xff0c;在分组内部根据 COL2排序&#xff0c;而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的).与rownum的区别在于&#x…

oracle ora31633,ORA-31633: unable to create master table

ORA-31626: job does not existORA-31633: unable to create master table "NEWCOURSE.JOB_48"ORA-06512: at "SYS.DBMS_SYS_ERROR", line 95ORA-06512: at "SYS.KUPV$FT", line 1020ORA-00955: name is already used by an existing object同步…

a表剔除b表 oracle,删除a表中和b表相同的数据

删除a表中和b表相同的数据删除a表中和b表相同的数据软件环境&#xff1a;1、Windows NT4.0ORACLE 8.0.42、ORACLE安装路径为&#xff1a;C:&#xff3c;ORANT问题提出&#xff1a;1、在做数据转储业务的时候&#xff0c;如果发生操作错误&#xff0c;有可能出现主表和副表中都有…

nifi将hive同步到oracle,NiFi使用总结 一 hive到hive的PutHiveStreaming processor和SelectHiveQL...

我说实话&#xff0c;NiFi的坑真的挺多的。。。1、PutHiveStreaming processor的使用该控制器配置需要hive启用事物&#xff1b;且目前只支持orc格式&#xff0c;且建表需要分桶&#xff0c;开启事务等&#xff0c;建表示例如下&#xff1a;create tabletest_trancaction(user_…

rds oracle,Amazon RDS Oracle数据库托管

您可通过两种不同的许可模式运行 Amazon RDS for Oracle&#xff0c;即“附带许可”和“使用自有许可 (BYOL)”。在“附带许可”服务模型中&#xff0c;您无需单独购买 Oracle 许可&#xff1b;Oracle 数据库软件软件由 AWS 提供授权许可。“附带许可”的起价为 0.04 USD/小时&…

oracle监听系统账号,linux 下 Oracle 监控sysdba用户登陆

在unix平台的Oracle数据库产品中&#xff0c;每次当用户以sysdba权限登陆数据库时&#xff0c;系统就自动创建一个名为ora_.aud的文件&#xff0c;该文件默认在$ORACLE_HOME/rdbms/audit目录下。该文件的自动创建根本不需要系统打开审计功能。在这个文件中记录了连接的用户&…

linux目录下有斜杠,Windows和Linux路径中斜杠/和反斜杠\ 的区别

Unix使用斜杆/ 作为路径分隔符&#xff0c;而web应用最新使用在Unix系统上面&#xff0c;所以目前所有的网络地址都采用 斜杆/ 作为分隔符。Windows由于使用 斜杆/ 作为DOS命令提示符的参数标志了&#xff0c;为了不混淆&#xff0c;所以采用 反斜杠\ 作为路径分隔符。所以目前…

linux密码带星号,Linux下实现输入密码以星号显示

#include #include #include #include #include #include char Getch(){int c 0;int res 0;struct termios org_opts, new_opts;res tcgetattr(STDIN_FILENO, &org_opts); //用于获取与终端相关的参数if(res -1){printf("tcgetattr error! Error code: %d&#xf…

linux内核网络raw_cpu_add,深入理解Linux网络技术内幕-设备注册和初始化(四)

static void rollback_registered_many(struct list_head *head){struct net_device *dev, *tmp;BUG_ON(dev_boot_phase);ASSERT_RTNL(); //检查是否获取了rtnl互斥量list_for_each_entry_safe(dev, tmp, head, unreg_list) {/* Some devices call without registering* for i…

linux通过时间查询日志,linux按时间查询日志

在系统应用集中部署的时候&#xff0c;很多日志因为太多难以定位&#xff0c;获取某段时间的日志是对运维人员非常关键的事情。一、sed查看某时间段到现在的系统日志&#xff1a;sed -n /May 20 17/,$p /var/log/messages | less二、sed 截选时间段日志首先看一下日志的格…

telnet服务下载 Linux,linux telnet服务安装包

这是linux telnet服务安装包下载&#xff0c; telnet-client 客户端安装包、telnet-server服务端安装包和xinetd依赖包&#xff0c;本人在linux retHat 32位系统上亲自安装过&#xff0c;若您依旧安装不成功&#xff0c;没关系&#xff0c;在附赠.txt中&#xff0c;打开这个链接…

linux挂载硬盘的分区创建,Linux 新增硬盘、新建分区、格式化硬盘、挂载硬盘的操作...

今天学校有一台机器发现有块硬盘没有挂载&#xff0c;然后叫我挂载一下&#xff0c;这里记录一下 Linux 下新增硬盘分区、格式化硬盘、挂载硬盘的操作。查看当前硬盘首先我们查看一下当前的硬盘配置。使用命令sudo fdisk -l就可以看到目前的硬盘了。可以看到有块空的 sda(这里忘…

Win10 Linux GPT分区方案,win10+Ubuntu 20.04 LTS双系统安装(UEFI + GPT)(图文,多图预警)

win10 安装(已安装的略过)制作启动u盘插入U盘&#xff0c; 运行 rufus-3.10.exe&#xff0c;按照下面选择&#xff0c;然后点击开始&#xff0c;等待完成即可为Ubuntu安装空出分区此电脑->管理->磁盘管理&#xff0c;选择一个磁盘右键选择压缩卷&#xff0c;压缩出50G以上…

linux 动态库构造函数,Linux共享库全局构造函数的相互依赖性

操作系统Centos 5.6 i686 2.6.18-53.1.4.el5vm.gcc版本4.1.2 20080704(Red Hat 4.1.2-48)ld版本2.17.50.0.6-6.el5 20061020我以这种方式编译&#xff1a;gcc -c -fnon-call-exceptions -fexceptions -Wall -DUNICODE -D_UNICODE -D_REENTRANT -I.并以这种方式链接&#xff1a;…

linux ptrace 读内存,Linux高级调试与优化——ptrace

ptrace (process trace)#include long ptrace(enum __ptrace_request request, pid_t pid, void *addr, void *data);ptrace系统调用运行tracer进程监视和控制tracee进程的执行过程&#xff0c;检查和修改tracee进程的内存和寄存器值。ptrace主要用来实现端点调试和跟踪系统调用…

linux关闭4750 端口,【ubuntu分享帖】acer 4750G ubuntu安装后的一些设置

本帖最后由 love雨阳 于 2011-11-7 13:27 编辑本帖前提&#xff1a;已经成功安装ubuntu11.10 网卡驱动默认成功1.安装完之后&#xff0c;开机&#xff0c;进入ubunt 第一件事当然是联网,首先&#xff0c;确定你的网络链接方式&#xff0c;如果是路由器自动分配ip的那种应该不用…

linux自动异地备份,Linux本地加异地自动备份方案

创建脚本/root/script/backup.sh# 该脚本应用于10多台普通的Linux应用服务器&#xff0c;多年来从未出过差错。# 数据库备份较为特殊&#xff0c;这里不包含数据库备份。# 因为脚本中含有FTP密码&#xff0c;所以FTP仅给予写权限较为安全&#xff0c;FTP中的老备份的定期删除任…