java实现手机短信验证全过程

article/2025/7/12 7:15:55

点个赞,看一看,好习惯!本文 GitHub https://github.com/OUYANGSIHAI/JavaInterview 已收录,这是我花了 3 个月总结的一线大厂 Java 面试总结,本人已拿大厂 offer。
另外,原创文章首发在我的个人博客:blog.ouyangsihai.cn,欢迎访问。

手机短信验证现在在各种系统可以说都是用的非常普遍的,这个可能是方便和安全性的考虑,所以才广泛的使用,这篇文章就以一个短信接口的实例,来讲解一下怎么使用短信接口。

一、前期工作

首先,我们需要选定一家短信接口的公司,然后去注册和获取一系列的ID等,然后就可以正式的创建我们的短信业务了。下面以某个短信接口为例讲解。

1.1、注册

http://www.miaodiyun.com/index.html(对于用哪个平台的看个人,这个只是实例)

1.2、获取到ACCOUNT SID和AUTH TOKEN

这里写图片描述

1.3、创建短信模板

这里写图片描述

如上图,点击配置管理,然后进入到短信模板,再点击新建模板,创建好你的短信模板

下面给出我的模板作为参考。
这里写图片描述

注意:上面创建的短信模板的信息,需要在代码中用到,并且一定需要保持一致,否则,会出现异常。

例如,上面的短信模板的信息应为:“【欧阳科技】登录验证码:{1},如非本人操作,请忽略此短信。”,{1}为占位符,是你的短信验证码。

好了,有了这些准备之后,就可以开始发短信了。

二、具体代码

config.java:
这个类主要是一些常亮参数的配置信息。

这里我们需要修改我们注册时获取到的ACCOUNT SIDAUTH TOKEN


/*** 系统常量*/
public class Config
{/*** url前半部分*/public static final String BASE_URL = "https://api.miaodiyun.com/20150822";/*** 开发者注册后系统自动生成的账号,可在官网登录后查看*/public static final String ACCOUNT_SID = "aac6e373c7534007bf47648ba34ba2f1";/*** 开发者注册后系统自动生成的TOKEN,可在官网登录后查看*/public static final String AUTH_TOKEN = "47605360a97a4f81bcd576e8e0645edf";/*** 响应数据类型, JSON或XML*/public static final String RESP_DATA_TYPE = "json";
}

HttpUtil.java(http请求工具):


import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.OutputStreamWriter;
import java.net.URL;
import java.net.URLConnection;
import java.text.SimpleDateFormat;
import java.util.Date;import org.apache.commons.codec.digest.DigestUtils;/*** http请求工具*/
public class HttpUtil
{/*** 构造通用参数timestamp、sig和respDataType* * @return*/public static String createCommonParam(){// 时间戳SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmmss");String timestamp = sdf.format(new Date());// 签名String sig = DigestUtils.md5Hex(Config.ACCOUNT_SID + Config.AUTH_TOKEN + timestamp);return "&timestamp=" + timestamp + "&sig=" + sig + "&respDataType=" + Config.RESP_DATA_TYPE;}/*** post请求* * @param url*            功能和操作* @param body*            要post的数据* @return* @throws IOException*/public static String post(String url, String body){System.out.println("url:" + System.lineSeparator() + url);System.out.println("body:" + System.lineSeparator() + body);String result = "";try{OutputStreamWriter out = null;BufferedReader in = null;URL realUrl = new URL(url);URLConnection conn = realUrl.openConnection();// 设置连接参数conn.setDoOutput(true);conn.setDoInput(true);conn.setConnectTimeout(5000);conn.setReadTimeout(20000);conn.setRequestProperty("Content-Type", "application/x-www-form-urlencoded");// 提交数据out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");out.write(body);out.flush();// 读取返回数据in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));String line = "";boolean firstLine = true; // 读第一行不加换行符while ((line = in.readLine()) != null){if (firstLine){firstLine = false;} else{result += System.lineSeparator();}result += line;}} catch (Exception e){e.printStackTrace();}return result;}/*** 回调测试工具方法* * @param url* @param reqStr* @return*/public static String postHuiDiao(String url, String body){String result = "";try{OutputStreamWriter out = null;BufferedReader in = null;URL realUrl = new URL(url);URLConnection conn = realUrl.openConnection();// 设置连接参数conn.setDoOutput(true);conn.setDoInput(true);conn.setConnectTimeout(5000);conn.setReadTimeout(20000);// 提交数据out = new OutputStreamWriter(conn.getOutputStream(), "UTF-8");out.write(body);out.flush();// 读取返回数据in = new BufferedReader(new InputStreamReader(conn.getInputStream(), "UTF-8"));String line = "";boolean firstLine = true; // 读第一行不加换行符while ((line = in.readLine()) != null){if (firstLine){firstLine = false;} else{result += System.lineSeparator();}result += line;}} catch (Exception e){e.printStackTrace();}return result;}
}

验证码通知短信接口:(最重要)
这里需要修改我们在注册时获取到的信息。

  • 修改smsContent
    把这个短信的内容修改为你创建的短信模板
    **注意:**一定要保持一致。
import java.net.URLEncoder;import com.miaodiyun.httpApiDemo.common.Config;
import com.miaodiyun.httpApiDemo.common.HttpUtil;/*** 验证码通知短信接口* * @ClassName: IndustrySMS* @Description: 验证码通知短信接口**/
public class IndustrySMS
{private static String operation = "/industrySMS/sendSMS";private static String accountSid = Config.ACCOUNT_SID;private static String to = "13767441759";private static String code = smsCode();
//	登录验证码:{1},如非本人操作,请忽略此短信。private static String smsContent = "【欧阳科技】登录验证码:"+code+",如非本人操作,请忽略此短信。";/*** 验证码通知短信*/public static void execute(){String tmpSmsContent = null;try{tmpSmsContent = URLEncoder.encode(smsContent, "UTF-8");}catch(Exception e){}String url = Config.BASE_URL + operation;String body = "accountSid=" + accountSid + "&to=" + to + "&smsContent=" + tmpSmsContent+ HttpUtil.createCommonParam();// 提交请求String result = HttpUtil.post(url, body);System.out.println("result:" + System.lineSeparator() + result);}//创建验证码public static String smsCode(){String random=(int)((Math.random()*9+1)*100000)+"";	System.out.println("验证码:"+random);return random;}
}

上面这些是主要的类,还有其他的类在文章末尾给出源代码。

三、手机短信验证测试


public class Test
{/*** @param args*/public static void main(String[] args){// 验证码通知短信接口IndustrySMS.execute();}}
源代码下载

请到公众号 程序员的技术圈子,回复:短信验证

最后,再分享我历时三个月总结的 Java 面试 + Java 后端技术学习指南,这是本人这几年及春招的总结,已经拿到了大厂 offer,整理成了一本电子书,拿去不谢,目录如下:

现在免费分享大家,在下面我的公众号 程序员的技术圈子 回复 面试 即可获取。

有收获?希望老铁们来个三连击,给更多的人看到这篇文章

1、老铁们,关注我的原创微信公众号「程序员的技术圈子」,专注于 Java、数据结构和算法、微服务、中间件等技术分享,保证你看完有所收获。

2、给俺点个赞呗,可以让更多的人看到这篇文章,顺便激励下我继续写作,嘻嘻。

3、另外,原创文章首发在我的个人博客:blog.ouyangsihai.cn,欢迎访问。

点赞是对我最大的鼓励
↓↓↓↓↓↓


http://chatgpt.dhexx.cn/article/IST7SsBr.shtml

相关文章

安卓手机短信

前提--权限&#xff1a; [java] view plain copy <uses-permission android:name"android.permission.RECEIVE_SMS" > </uses-permission> <uses-permission android:name"android.permission.READ_SMS" > </uses-permission&…

想为自己的网站添加短信验证怎么弄_捷径教程讲解一云手机短信验证码接受平台的聚合...

除了最初发表的以"熔岩音乐"和"流利阅读"为范本&#xff0c;以及初学者入门点这里&#xff0c;内容太过于巨细靡遗&#xff0c;主要是为了给入门朋友详解相关的基本流程&#xff0c;但之后所有文章唯有对于实例的重点讲解&#xff0c;主要在于培养大家对于…

短信SMS的接收

近日&#xff0c;看了《第一行代码》有关短信接收的内容&#xff0c;就总结了一下。 1.手机接收到一条短信时&#xff0c;系统会发出一条android.provider.Telephy.SMS_RECEIVER的广播&#xff0c;这条广播带有短信的所有数据 2.首先定义xml文件 <LinearLayout android:layo…

阿里云——Java实现手机短信验证码功能

目录 如何实现短信验证码功能1.准备工作1.1 注册 阿里云 账号&#xff0c;并完成实名认证。找到短信服务功能。1.2 开通短信服务1.3 签名与模板1.4 获取AccessKey1.5 打开短信控制台&#xff0c;通过API测试功能 2.Java SDK 示例2.1 添加maven依赖2.2 阿里云官方配置 如何实现短…

Android短信Mms接受流程

本文主要介绍Android如何接收短信&#xff0c;流程分为两个部分&#xff0c;Framework层和App层。 Framework层&#xff1a; 短信的接收&#xff0c;Framework部分处理的顺序是RIL->SMSDispatcher->GsmSMSDispatcher/CdmaSMSDispatcher->SMSDispatcher。 当短信到Fram…

vue实现一键换肤功能

1.创建所需要替换的css文件&#xff0c;1个皮肤对应一个&#xff0c;放在同一个目录 2.用link在index.html引入你所要用的皮肤css文件 3.在你需要实现换肤的页面添加方法 &#xff08;1&#xff09;首次加载&#xff0c;默认选中第一个皮肤&#xff0c;之后就选择最后所选的皮…

App一键换肤功能

实现应用皮肤随意切换&#xff0c;这里只做基础展示&#xff0c;一个是常规肤色&#xff0c;一个是夜晚模式肤色 效果如下&#xff1a; 步骤如下&#xff1a; 1、引入换肤三方框架 2、在Application中对换肤SkinCompatManager进行初始化 3、在main下新建自己对应肤色res文件…

微信小程序——如何一键换肤

小程序一键换肤不难&#xff0c;在这之前需要了解CSS的 var() 函数 方法如下&#xff1a; 先在page页面里创建一个包含所有元素的view标签&#xff0c;并为其配置style颜色的数据绑定&#xff1a; js如下&#xff1a; 此后我们只需要通过this.setData({})的方法改变data里…

Android hook技术实现一键换肤,移动应用开发项目案例

3. 利用HOOK技术实现优雅的“一键换肤" 什么是hook**如题,我是用hook实现一键换肤。那么什么是hook? hook,钩子. 安卓中的hook技术,其实是一个抽象概念:对系统源码的代码逻辑进行"劫持",插入自己的逻辑,然后放行。注意:hook可能频繁使用java反射机制**…

react+antd+vite配置一键换肤功能(步骤详细)

一、首先需要下载less、less-loader&#xff0c;然后在vite.config.js中配置如下 二、再全局引入node_modules中的less文件 三、引入antd中全局化配置组件,详细配置请参考官网ConfigProvider 四、最后通过ConfigProvider.config中的参数进行动态配置&#xff0c;从而改变主题…

Vue Element-ui 一键换肤的方案(第二种)

目录 前言 1、新建类名 2、定义变量 3、使用 4、关于切换主题的逻辑 总结 前言 因为涉及到除了ui库以外的样式需要配置两个风格或者更多的颜色&#xff0c;所以有了这个方案的出现。 1、新建类名 首先在style找到element这个文件夹&#xff0c;在base-variable.scss里&am…

前端项目一键换肤vue+element(ColorPicker)

前端项目一键换肤 1.需要配色的都是用变量声明 2.增加颜色选择器 3.改变颜色&#xff0c;更改初始值 1.需要配色的都是用变量声明 /* 全局样式 */ body {// 无需改变--light_color_aside: #f6f6f6;// 主题色--light_colourt: #E60027;--theme_color: #EC5E59;--light_color_b…

前端 “一键换肤“ 的几种方案

作者&#xff1a;熊的猫 原文&#xff1a;https://juejin.cn/post/7063010855167721486 前端 “一键换肤“ 的几种方案 前言 现在越来越多的网站都提供了拥有换肤&#xff08;切换主题&#xff09;功能&#xff0c;如 ElementUI&#xff0c;既是为了迎合用户需求&#xff0c;或…

element-plus简易一键换肤

哈喽&#xff0c;大家好我是小衰&#xff0c;勤勤恳恳一码农&#xff0c;低级前端工程师&#xff0c;不吃甲方零食下午茶&#xff0c;热爱用双手解决问题&#xff0c;白天用双手敲代码 晚上用双手做一些正能量的事情&#xff0c;夜深了&#xff0c;由于小哀在公司勤勤恳恳的努力…

vue 一键换肤 换主题

该一键换肤只是定义好几个颜色&#xff0c;并进行简单的切换。 在src下的assets文件下面定义一个css文件夹&#xff0c;在对应的文件里面定义_handle.scss和_themes.scss文件&#xff0c;如下&#xff1a; image.png 2.在_themes.scss文件里面定义好需要用到的几个样式。如下…

如何利用 SCSS 实现一键换肤

环境准备 首先我们需要安装 scss 解析环境 npm i sass // 注意 sass-loader 安装需要指定版本 如果安装最新版本会报错 this.getOptions 这个方法未定义 npm i -D sass-loader10.1.0 // 利用 normalize.css 初始化页面样式 npm i -S normalize.css 小技巧 这里讲一个小技巧&a…

项目实现一键换肤的功能

在publick下面分别建立两个文件 一个是默认的一个是夜间的 然后在app。vue入口文件 mounted(){let colorName localStorage.getItem(themes) || defaultlet link document.createElement(link)link.type text/csslink.relstylesheetlink.href /themes/${colorName}.cssdocu…

从零开始Vue3+Element Plus后台管理系统(17)——一键换肤的N种方案

暗黑模式 基于Element Plus和Tailwind CSS灵活的设计&#xff0c;我们很容易在项目中实现暗黑模式&#xff0c;具体可以参考之前的文章《从零开始写一个Vue3Element Plus的后台管理系统(二)——Layout页面布局的实现》 换肤方案 如果需要给用户提供更多主题&#xff0c;更丰…

三步实现Android应用内一键换肤,无需重启应用,无需编写多余代码

古人学问无遗力&#xff0c;少壮工夫老始成。 纸上得来终觉浅&#xff0c;绝知此事要躬行。 --《冬夜读书示子聿》 陆游 换肤效果演示 四种皮肤切换&#xff1a;默认白色、蓝色、绿色和玫瑰红&#xff1a; 前言 先给大家介绍一下现在比较主流的、Star比较多的换肤框架&#…

前端 “一键换肤“ 的 N 种方案

前端瓶子君&#xff0c;关注公众号 回复算法&#xff0c;加入前端编程面试算法每日一题群 前言 现在越来越多的网站都提供了拥有换肤&#xff08;切换主题&#xff09;功能&#xff0c;如 ElementUI[2]&#xff0c;既是为了迎合用户需求&#xff0c;或是为了凸显自己特点&#…