Java实现手机短信验证码(互亿无线)

互亿无线

       互亿无线是一家提供电信类增值服务插件以及其他相关插件的公司,是中国移动、中国联通、中国电信三大运营商的战略合作伙伴与工信部认定的电信增值业务服务商。公司旗下运营三大业务平台:数字奖励营销活动平台、应用短信平台、营销短信平台。

官网:短信api_短信接口api_短信接口验证码_短信验证码API_短信通知api接口_互亿无线

实现方法

1、pom.xml文件导包

        <!--    短信    --> <dependency><groupId>dom4j</groupId><artifactId>dom4j</artifactId><version>1.6.1</version></dependency><dependency><groupId>commons-httpclient</groupId><artifactId>commons-httpclient</artifactId><version>3.0</version></dependency><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.13</version></dependency>

2、创建发送短信工具类

 一般把这个类放到util工具目录下(我自己是在若依框架下的项目)

package com.ruoyi.common.utils;import org.apache.commons.httpclient.HttpClient;
import org.apache.commons.httpclient.HttpException;
import org.apache.commons.httpclient.NameValuePair;
import org.apache.commons.httpclient.methods.PostMethod;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.DocumentHelper;
import org.dom4j.Element;import java.io.IOException;public class SendSmsUtil {private static final String URL = "http://106.ihuyi.com/webservice/sms.php?method=Submit"; //国内请求路径private static final String APPID = "******(这里填写自己的APPID)";private static final String APIKEY = "*****(这里填写自己的APIKEY)";public static String SMS(String number) throws HttpException, IOException{HttpClient client = new HttpClient();PostMethod method = new PostMethod(URL);client.getParams().setContentCharset("utf-8");method.setRequestHeader("ContentType","application/x-www-form-urlencoded;charset=utf-8");//随机编号int mobile_code = (int)((Math.random()*9+1)*100000);String content = new String("您的验证码是:" + mobile_code + "。请不要把验证码泄露给其他人。");NameValuePair[] data = {//提交短信new NameValuePair("account",APPID ), //查看用户名 登录用户中心->验证码通知短信>产品总览->API接口信息->APIIDnew NameValuePair("password", APIKEY), //查看密码 登录用户中心->验证码通知短信>产品总览->API接口信息->APIKEYnew NameValuePair("mobile", number),new NameValuePair("content", content),};method.setRequestBody(data);try {client.executeMethod(method);String SubmitResult =method.getResponseBodyAsString();Document doc = DocumentHelper.parseText(SubmitResult);Element root = doc.getRootElement();String code = root.elementText("code");String msg = root.elementText("msg");String smsid = root.elementText("smsid");System.out.println("code"+code);System.out.println("msg"+msg);System.out.println("smsid"+smsid);System.out.println("mo"+mobile_code);if("2".equals(code)){System.out.println("短信提交成功");System.out.println(mobile_code);return mobile_code+"";}} catch (HttpException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (IOException e) {// TODO Auto-generated catch blocke.printStackTrace();} catch (DocumentException e) {// TODO Auto-generated catch blocke.printStackTrace();}return "";}
}

注意!!!

在写工具类之前,要先去互亿无线官网注册账号,获取到你个人的一个APPID和APIKEY。

 3、Contriller控制层调用工具类

//获取验证码
@RequestMapping("/sendCode")public void sendCode(HttpServletRequest req, PrintWriter pw)throws ServletException, IOException {String number=req.getParameter("number");String strCode= SendSmsUtil.SMS(number);req.getSession().setAttribute("code", strCode);System.out.println("strCode"+strCode);if(strCode!=""){pw.write("success");}}

4、前端代码

//界面显示
电话号码: <input type="text" id="number" name="number"  placeholder="电话" />
验证码: <input type="text" id="captcha" name="captcha"   />
<input type="button" value="获取验证码" id="update" onclick="sendSms();"/>
function sendSms() {var number = $("#number").val();$.post("/html/sendCode",{number:number},function (data) {if (data == "success"){var second = 60;console.log("发送成功");}})}

可以参考这两篇文章:

Java实现手机发送短信验证码_java发送短信验证码-CSDN博客

Java短信验证码-互亿无线_互亿无线 工具类-CSDN博客

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

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

IJCAI 2024:吉林大学、中国科学院计算技术研究所和自动化研究所等揭示数据增强在开放场景下的“两面性”

吉林大学人工智能学院研究员高一星、中国科学院计算技术研究所副研究员唐帆、中国科学院自动化研究所研究员董未名等在人工智能领域的CCF-A类顶级国际会议IJCAI上发表的工作&#xff0c;揭示并分析基于样本混合的数据增强方法在开放场景下存在的问题&#xff0c;提出了基于非对…

vue实现点击选中以下内容按钮选中按钮位置以下的所有数据项

1、预期效果 该需求的由来&#xff0c;是公司的产品为了实现如飞书这款应用中&#xff0c;IM聊天界面多选消息时一个快捷选择消息的操作功能。 2、实现思路 1. 使选择按钮悬浮在列表试图上方&#xff1b; 2. 在鼠标按下按钮时在其样式添加 pointer-events: none 使鼠标点击…

揭秘马斯克的日常:凌晨3点睡,每天苦恼开哪辆车,曾一度每周工作120小时 | 最新快讯

作为特斯拉和 SpaceX 的首席执行官&#xff0c;同时也是社交媒体平台X&#xff08;前身为推特&#xff09;的拥有者&#xff0c;埃隆马斯克以其在科技和商业领域的杰出成就而闻名。他的成功与其独特而苛刻的日常生活习惯密切相关。 上班前必须先洗澡 通勤时苦恼开哪辆特斯拉 据…

某大型文旅集团车辆维修公司薪酬绩效改革项目纪实 图片附件

---如何通过绩效薪酬改革&#xff0c;帮助公司降本增效 文旅行业“旺丁不旺财”&#xff1f;学会这样激励人才&#xff01;“五一”假期出游继续呈现火爆态势&#xff0c;但也出现了一些“旺丁不旺财”“增收不增利”的现象。文旅行业最重要的还是人力因素&#xff0c;靠人去做…

GPS与精致农业 无人机应用 农业遥感 农业类

全球定位系统是美国国防部主要为满足军事部门对海上、陆地和空中设施进行高精度导航和定位的要求而建立的。GPS系统最基本的特点是以“多星、高轨、高频、测量-测距”为体制&#xff0c;以高精度的原子钟为核心。GPS作为新一代卫星导航与定位系统&#xff0c;不仅具有全球性、全…

AF594-标记羊抗鼠免疫球蛋白(H+L),山羊抗小鼠IgG全长抗体已被交叉吸附在抗人IgG和人血清上,然后再偶联以小化交叉反应性

试剂介绍&#xff1a; AF594-标记羊抗鼠免疫球蛋白(HL)是荧光标记二抗&#xff0c;我们的山羊抗小鼠IgG全长抗体已被交叉吸附在抗人IgG和人血清上&#xff0c;然后再偶联以小化交叉反应性。 这种AF594标记的山羊抗小鼠IgG缀合物通过交叉吸附的山羊抗小鼠IgG全抗体与AF594 NHS酯…

python-scrapy框架示例

参考&#xff1a;https://blog.csdn.net/qq_44907926/article/details/119531324 创建项目步骤&#xff1a; 1.目标网站:www.itcast.cn 2.安装虚拟环境 pip install virtualenv3.创建虚拟环境 virtualenv --always-copy --system-site-packages venv4.激活虚拟环境 venv\sc…

便捷的驾驶证识别API,简化工作流程

随着社会的发展和人们生活水平的提高&#xff0c;机动车的数量也越来越多。为了确保交通安全和减少违法行为&#xff0c;每个驾驶机动车的人都需要携带驾驶证。然而&#xff0c;识别驾驶证上的信息却是一个繁琐的过程。为了简化这个工作流程&#xff0c;提高工作效率&#xff0…

信创基础软件之数据库

一、数据库概述 数据库是一种用于存储和管理拥有固定格式和结构数据的仓库型数据管理系统。其主要用于业务数据的存储和业务逻辑运算&#xff0c;具体负责保障数据的安全性、完整性、多用户对数据的并发使用以及发生故障后的系统恢复。 二、数据库的体系架构 数据库内核:对数…

这份攻防图谱,哪个搞安全的见了会不想要?(附下载)

近年来&#xff0c;随着我国信息化建设不断推进&#xff0c;信息技术广泛应用&#xff0c;信息网络快速普及。信息网络在促进经济发展、社会进步、科技创新的同时&#xff0c;也带来十分突出的信息安全问题。 现今的网络攻击手段逐步多样化、攻击方式也更加隐蔽难以发现。对于…

信息安全-古典密码学简介

目录 C. D. Shannon: 一、置换密码 二、单表代替密码 ① 加法密码 ② 乘法密码 ③密钥词组代替密码 三、多表代替密码 代数密码 四、古典密码的穷举分析 1、单表代替密码分析 五、古典密码的统计分析 1、密钥词组单表代替密码的统计分析 2、英语的统计规…

WebSocket 全面解析+实战演练(Nodejs实现简易聊天室)

&#x1f525; 个人主页&#xff1a;空白诗 文章目录 &#x1f31f; 引言&#x1f4da; WebSocket基础概念&#x1f4cc; 什么是WebSocket&#xff1f;&#x1f4cc; 为什么需要WebSocket&#xff1f;&#x1f4cc; 与HTTP的关系 &#x1f4bb; WebSocket API 使用指南&#x1…

《学周刊》杂志社学周刊杂志社学周刊编辑部2024年第15期目录

高等教育 人工智能时代的高校人才培养模式创新探讨 潘邦超; 1-3 高等院校视角下的“家校社”协同育人问题及对策研究——以驻盐高校为例 张雨清; 4-6 职业教育《学周刊》投稿&#xff1a;cn7kantougao163.com 基于EST理念的中职《成本会计》课程混合式教学策略研究…

JAVA中的线程、死锁、异常

线程 Thread 一、程序 1&#xff0e;一段静态代码&#xff08;静态&#xff09; 二、进程 1&#xff0e;动态的&#xff0c;有开始&#xff0c;有结束&#xff1b;2&#xff0e;程序的一次执行过程&#xff0c;3&#xff0e;操作系统调度分配资源的最小单位&#xff1b; 三、…

循环编码:时间序列中周期性特征的一种常用编码方式

在深度学习或神经网络中&#xff0c;“循环编码”&#xff08;Cyclical Encoding&#xff09;是一种编码技术&#xff0c;其特点是能够捕捉输入或特征中的周期性或循环模式。这种编码方法常用于处理具有周期性行为的任务&#xff0c;比如时间序列预测或理解展示周期性特征的序列…

函数编辑器调研及设计开发

前言&#xff1a;在产品研发中需要一款可嵌入web开发的代码及函数编辑器&#xff0c;本文从功能&#xff0c;扩展&#xff0c;外观/交互&#xff0c;维护/社区&#xff0c;兼容性&#xff0c;开源与否等方面考虑&#xff0c;进行对比筛选 1、编辑器统计数据 市面上编辑器有很…

软考是否存在包过班?

国家考试&#xff0c;虽然有人喊着包过&#xff0c;但你也别轻易相信啊&#xff0c;姐妹&#xff0c;要好好保护好你的钱包啊&#xff01;这种考试是没有所谓的包过的。 给你一些学习软考需要注意的要点&#xff1a; 1、深入理解考试内容&#xff1a; 在准备软考之前&#xf…

【redis】redis持久化分析

目录 持久化Redis持久化redis持久化的方式持久化策略的设置1. RDB&#xff08;快照&#xff09;fork(多进程)RDB配置触发RDB备份自动备份手动执行命令备份&#xff08;save | bgsave&#xff09;flushall命令主从同步触发动态停止RDB RDB 文件恢复验证 RDB 文件是否被加载 RDB …

面试中算法(删去n个数字后的最小值)

有一个整数&#xff0c;从该整数中去掉n个数字&#xff0c;要求剩下的数字形成的新整数尽可能小。 分析&#xff1a;使用栈的特性&#xff0c;在遍历原整数的数字时&#xff0c;让所有数字一个一个入栈&#xff0c;当某个数字需要被删除时&#xff0c;&#xff08;即栈顶数字&g…

期权扫盲贴:基础知识汇总,如何开通低佣期权账户(建议收藏)

一、什么是场内期权&#xff1f; 场内期权&#xff0c;也被称为交易所期权&#xff0c;是指在证券交易所内进行交易的标准化期权合约。 场内期权的交易是由证券交易所发布和监管的&#xff0c;具有统一的合约规格和交易规则&#xff0c;因此方便投资者进行交易。 以中国证券…