您当前的位置:首页 > 电脑百科 > 程序开发 > 语言 > JAVA

Java实现第三方短信接口发送短信验证码

时间:2022-08-18 12:58:49  来源:  作者:杂文论

最近在做用户登陆注册模块的时候用到了采用第三方短信接口发送短信验证码,查询了一些网站和参考了一些别人的方法,用的是网建短信通的,也可以阿里云平台的或者别的平台的。

首先还是登陆注册用户信息,然后进入这个网站的首页之后我们先进入修改短信密钥拿到自己的安全密钥,然后进入上面的短信API接口页面

可以看到他们官方给出了一个演示demo

import JAVA.io.UnsupportedEncodingException;

import org.Apache.commons.httpclient.Header;

import org.apache.commons.httpclient.HttpClient;

import org.apache.commons.httpclient.NameValuePair;

import org.apache.commons.httpclient.methods.PostMethod;

public class SendMsg_webchinese {

public static void main(String[] args)throws Exception

{

HttpClient client = new HttpClient();

PostMethod post = new PostMethod("http://gbk.api.smschinese.cn");

post.addRequestHeader("Content-Type","
Application/x-www-form-urlencoded;charset=gbk");//在头文件中设置转码

NameValuePair[] data ={ new NameValuePair("Uid", "本站用户名"),new NameValuePair("Key", "接口安全秘钥"),new NameValuePair("smsMob","手机号码"),new NameValuePair("smsText","验证码:8888")};

post.setRequestBody(data);

client.executeMethod(post);

Header[] headers = post.getResponseHeaders();

int statusCode = post.getStatusCode();

System.out.println("statusCode:"+statusCode);

for(Header h : headers)

{

System.out.println(h.toString());

}

String result = new String(post.getResponseBodyAsString().getBytes("gbk"));

System.out.println(result); //打印返回消息状态

post.releaseConnection();

}

}

代码还是很容易就能看懂的,我们只需要改的是

NameValuePair[] data ={ new NameValuePair("Uid", "本站用户名"),new NameValuePair("Key", "接口安全秘钥"),new NameValuePair("smsMob","手机号码"),new NameValuePair("smsText","验证码:8888")};

1

可以看到这个Uid就是刚刚我们注册的用户名,key是刚刚获取到的密钥,smsMob就是要发送信息的手机号了,smsText就是要发送的信息。

所以把上面的演示demo稍微修改一下就可以直接使用了:

public static HashMap<String,String> getMessageStatus(String phone)throws Exception

{

HashMap<String,String> map=new HashMap<String,String>();

String code=VerifyingCode();

HttpClient client = new HttpClient();

PostMethod post = new PostMethod("
http://gbk.api.smschinese.cn");//该第三方短信服务地址

post.addRequestHeader("Content-Type",

"
application/x-www-form-urlencoded;charset=gbk");//在头文件中设置转码

NameValuePair[] data = {

new NameValuePair("Uid", "*****"),

new NameValuePair("Key", "*********"),

new NameValuePair("smsMob",phone),

new NameValuePair("smsText","您的验证码是"+code+",有效时间为10分钟,请尽快验证。")

};

map.put("code",code);

post.setRequestBody(data);

client.executeMethod(post);

Header[] headers = post.getResponseHeaders();

int statusCode = post.getStatusCode();

System.out.println("statusCode:"+statusCode);

for(Header h : headers)

{

System.out.println(h.toString());

}

String result = new String(post.getResponseBodyAsString().getBytes("gbk"));

System.out.println(result); //打印返回消息状态,1表示发送成功,其他的小于0的为失败

map.put("result", result);

post.releaseConnection();

return map;

}

//生成六位随机数

public static String VerifyingCode()

{

Random random=new Random();

String code="";

for (int i=0;i<6;i++)

{

code+=random.nextInt(10);

}

System.out.println(code);

return code;

}

我的想法就是定义一个hashmap将生成的验证码与发送的状态放在map里面,那么在service层上进行业务处理的时候就可以直接拿到我们刚刚发送的验证码进行业务处理。

最后还需要导入官方给的三个jar包,依赖如下

<dependency>

<groupId>commons-httpclient</groupId>

<artifactId>commons-httpclient</artifactId>

<version>3.1</version>

</dependency>



Tags:Java   点击:()  评论:()
声明:本站部分内容及图片来自互联网,转载是出于传递更多信息之目的,内容观点仅代表作者本人,如有任何标注错误或版权侵犯请与我们联系(Email:2595517585@qq.com),我们将及时更正、删除,谢谢。
▌相关推荐
一.介绍本文主要介绍如何基于POST Policy的使用规则在客户端通过JavaScript代码完成签名,然后通过表单直传数据到OSS。二.客户端签名步骤1.在客户端通过JavaScript代码完成签...【详细内容】
2022-11-04  Tags: Java  点击:(1)  评论:(0)  加入收藏
本文将介绍接下来的技巧和主题: 在包装器上使用基元字段(例如,布尔值 ->布尔值) 减少形成平面结构的类的数量(在一个或多个类中折叠类) 尽可能使用窄数据类型(例如,代替,代替等)short...【详细内容】
2022-11-02  Tags: Java  点击:(1)  评论:(0)  加入收藏
原因:最近在用Sqlite存储数据,因涉及数据安全,所以需要数据库加密,Sqlite库默认不带加密功能 目前已知的对 SQLite 加密的工具主要有「[SQLite Encryption Extension (SEE)]、[S...【详细内容】
2022-11-01  Tags: Java  点击:(17)  评论:(0)  加入收藏
Image Processing in Javascript如果您正在寻找一种在 Web 项目中处理或操作图片的方法,本文则可能值得一看。它们中的大多数都提供基本操作,例如调整亮度和对比度,灰度以及反...【详细内容】
2022-11-01  Tags: Java  点击:(7)  评论:(0)  加入收藏
对于数据抓取技术,本文介绍了java相关抓取工具,并附上demo源码供感兴趣的朋友测试!1)JDK自带HTTP连接,获取页面或Json 2) JDK自带URL连接,获取页面或Json 3)HttpClient Get工具,获取...【详细内容】
2022-10-31  Tags: Java  点击:(7)  评论:(0)  加入收藏
JavaScript(简称js)广泛应用在web开发领域,几乎是web开发的唯一编程语言,近些年,借助node.js的快速发展,js在服务器领域也有了非常广泛运用与拓展。然而,虽然js在前后端都有了一定...【详细内容】
2022-10-31  Tags: Java  点击:(11)  评论:(0)  加入收藏
每日分享最新,最流行的软件开发知识与最新行业趋势,希望大家能够一键三连,多多支持,跪求关注,点赞,留言。 在这篇博客中,我们将讨论 Node.js 和 JavaScript 开发之间的差异。JavaSc...【详细内容】
2022-10-28  Tags: Java  点击:(10)  评论:(0)  加入收藏
计算距离下次生日还有多少天注意这里借助 moment 实现 getBirthdayFun(){ // 首先要获取到今年的生日 let birthdayTime = moment().format(&#39;YYYY-&#39;...【详细内容】
2022-10-28  Tags: Java  点击:(9)  评论:(0)  加入收藏
作 者 | 肖荣强(路迁)写在前面为了提升应用稳定性,我们对前端项目开展了脚本异常治理的工作,对生产上报的js error进行了整体排查,试图通过降低脚本异常的发生频次来提升相关...【详细内容】
2022-10-27  Tags: Java  点击:(5)  评论:(0)  加入收藏
前言说到java内部类,想必大家首先会想到比较常用的“匿名内部类”,但实际上,这只是内部类的其中一种使用方式而已。内部类的使用方式实际上总共包括:成员内部类, 方法局部类,匿名...【详细内容】
2022-10-27  Tags: Java  点击:(9)  评论:(0)  加入收藏
▌简易百科推荐
本文将介绍接下来的技巧和主题: 在包装器上使用基元字段(例如,布尔值 ->布尔值) 减少形成平面结构的类的数量(在一个或多个类中折叠类) 尽可能使用窄数据类型(例如,代替,代替等)short...【详细内容】
2022-11-02  一个即将退役的码农  今日头条  Tags:Java   点击:(1)  评论:(0)  加入收藏
原因:最近在用Sqlite存储数据,因涉及数据安全,所以需要数据库加密,Sqlite库默认不带加密功能 目前已知的对 SQLite 加密的工具主要有「[SQLite Encryption Extension (SEE)]、[S...【详细内容】
2022-11-01  水中影子621  今日头条  Tags:Java   点击:(17)  评论:(0)  加入收藏
对于数据抓取技术,本文介绍了java相关抓取工具,并附上demo源码供感兴趣的朋友测试!1)JDK自带HTTP连接,获取页面或Json 2) JDK自带URL连接,获取页面或Json 3)HttpClient Get工具,获取...【详细内容】
2022-10-31  MYJ2C混淆  今日头条  Tags:   点击:(7)  评论:(0)  加入收藏
前言说到java内部类,想必大家首先会想到比较常用的“匿名内部类”,但实际上,这只是内部类的其中一种使用方式而已。内部类的使用方式实际上总共包括:成员内部类, 方法局部类,匿名...【详细内容】
2022-10-27  马士兵Java架构  今日头条  Tags:java   点击:(9)  评论:(0)  加入收藏
在项目开发中,后端服务对外提供API接口一般都会关注响应时长。但是某些情况下,由于业务规划逻辑的原因,我们的接口可能会是一个聚合信息处理类的处理逻辑,比如我们从多个不同的...【详细内容】
2022-10-26  架构悟道  今日头条  Tags:JAVA   点击:(16)  评论:(0)  加入收藏
与 PHP 或 JavaScript 不同,Java 是一种强类型编程语言。这实质上意味着每个变量都必须使用预定义的数据类型声明,之后不能更改。Java中有两种数据类型: 原始数据类型 - int、...【详细内容】
2022-10-26   qaseven    Tags:Java   点击:(6)  评论:(0)  加入收藏
1、原理:基于javaAgent和Java字节码注入技术的java探针工具技术原理 2、原理分析动态代理功能实现说明,我们利用javaAgent和ASM字节码技术开发java探针工具,实现原理如下:jdk1.5...【详细内容】
2022-10-24  马士兵Java架构  今日头条  Tags:Java探针   点击:(13)  评论:(0)  加入收藏
简介前面在密码学入门一文中讲解了各种常见的密码学概念、算法与运用场景,但没有介绍过代码,因此,为作补充,这一篇将会介绍使用Java语言如何实现使用这些算法,并介绍一下使用过程...【详细内容】
2022-10-22  扣钉日记  今日头条  Tags:Java   点击:(4)  评论:(0)  加入收藏
简单描述java虚拟机内存分配与GC触发场景堆内存中,新生代和老年代分区图解 堆空间的参数设置-XX: +PrintFlagsInitial :查看所有的参数的默认初始值-XX: +PrintFlagsFinal :...【详细内容】
2022-10-21  chost-jie    Tags:java虚拟机   点击:(6)  评论:(0)  加入收藏
概述最近项目上反馈某个重要的定时任务突然不执行了,很头疼,开发环境和测试环境都没有出现过这个问题。定时任务采用的是 ScheduledThreadPoolExecutor,后来一看代码发现踩了一...【详细内容】
2022-10-21  Java架构学习指南  今日头条  Tags:   点击:(8)  评论:(0)  加入收藏
站内最新
站内热门
站内头条