【JavaWeb】使用聚合数据短信API发送短信

一、准备工作

  • 聚合数据 首先在聚合数据官网中进行注册

  • 然后申请短信API服务,初次使用赠送5次

在这里插入图片描述

  • 申请成功之后,AppKey特别重要,不要让别人知道,然后再点击模板

在这里插入图片描述

  • 点击模板,填写模板内容,要申请通过,不通过拿不到模板ID。最主要是要得到模板ID,这是要发送到你手机上的内容

在这里插入图片描述

  • 这些弄好后可以写代码测试呢

二、短信API接口需要了解的地方

  • 查看聚合数据中短信API接口,需要接口地址请求参数(如果你要用请求示例的地址栏进行请求也是可以的)

在这里插入图片描述

  • 请求返回的数据

在这里插入图片描述

三、写代码实现

1.Demo中使用的是httpclient包

  • HttpClient 是 Apache Jakarta Common 下的子项目,可以用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。本文首先介绍 HTTPClient,然后根据作者实际工作经验给出了一些常见问题的解决方法。HTTP 协议可能是现在 Internet 上使用得最多、最重要的协议了,越来越多的 Java 应用程序需要直接通过 HTTP 协议来访问网络资源。虽然在 JDK 的 java.net 包中已经提供了访问 HTTP 协议的基本功能,但是对于大部分应用程序来说,JDK 库本身提供的功能还不够丰富和灵活。HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的、最新的、功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 HTTP 协议最新的版本和建议。

2.创建项目java发送短信Demo链接

  • 创建一个项目
  • 在pom文件引入httpclient依赖
<dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.5.8</version>
</dependency>
  • 项目图,创建一个MyHttpClientDemo文件

在这里插入图片描述

  • MyHttpClientDemo代码:
package com.ming;import org.apache.http.NameValuePair;
import org.apache.http.client.entity.UrlEncodedFormEntity;
import org.apache.http.client.methods.CloseableHttpResponse;
import org.apache.http.client.methods.HttpPost;
import org.apache.http.impl.client.CloseableHttpClient;
import org.apache.http.impl.client.HttpClients;
import org.apache.http.message.BasicNameValuePair;
import org.apache.http.util.EntityUtils;import java.nio.charset.Charset;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;public class MyHttpClientDemo {public static String doPost(String url, Map<String, String> params) {//创建一个httpclient对象CloseableHttpClient httpClient = HttpClients.createDefault();//返回参数String result = "";//构建响应对象CloseableHttpResponse response = null;try {//构建post请求HttpPost post = new HttpPost(url);if (params != null){//构建参数List<NameValuePair> paramList = new ArrayList<>();for (Map.Entry<String,String> param: params.entrySet()){paramList.add(new BasicNameValuePair(param.getKey(),param.getValue()));}//模拟表单对象UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(paramList, Charset.defaultCharset());post.setEntity(formEntity);}response = httpClient.execute(post);result = EntityUtils.toString(response.getEntity(), Charset.defaultCharset());} catch (Exception e) {e.printStackTrace();} finally {close(httpClient,response);}return result;}private static void close(CloseableHttpClient httpClient, CloseableHttpResponse response){try {if (response != null){response.close();}if (httpClient != null){httpClient.close();}} catch (Exception e){e.printStackTrace();}}public static void main(String[] args) {Map<String, String> params = new HashMap<String, String>();params.put("mobile","自己的手机号码");				//填写自己的手机号码params.put("tpl_id","211907");					//提写自己的短信模板IDparams.put("tpl_value","%23code%23%3d5643");	//5643是验证码,可以自己随便填写params.put("key","自己的AppKey");				//这里写自己的AppKeyparams.put("dtype","json");					//返回的是json格式的数据System.out.println(MyHttpClientDemo.doPost("http://v.juhe.cn/sms/send",params));}
}
  • 运行代码,看到控制台打印输出这个,证明发送验证码成功呢

在这里插入图片描述

  • 手机上会收到短信验证码

在这里插入图片描述

  • 完成

四、将验证码存储到Redis中(大概步骤)

  • 用户进入到注册页面,有手机号,密码,验证码,点击获取验证码时,把手机号作为参数请求服务器端的验证码功能方法的url
  • 服务器端首先根据传过来的手机号码,从redis中通过手机号码(key)获取验证码(value),如果验证码查询到说明验证码没有过期
  • 如果没有在redis中通过手机号码查询到验证码,说明验证码不存在或者说已经过期
  • 此时通过UUID随机生成4位数字,存储到redis中
  • 然后将手机号码验证码作为参数,调用短信API的代码,通过运营商发送给用户
  • 如果发送成功,将手机号码和验证码及其过期时间存储到redis中
  • 如果失败,则提示用户发送短信失败,请再次发送
  • 用户点击注册按钮,通过用户传过来的手机号码和输入的验证码,在redis中通过手机号码查询验证码,该验证码用户传过来的验证码进行比较,如果相等,则重定向到登录页面,增加用户体验

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

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

相关文章

收藏!2023国内外高质量短信平台一览

众所周知&#xff0c; 短信群发是一种快速、高效、低成本的营销手段&#xff0c;包括但不限于以下作用&#xff1a; 1、传递重要信息&#xff1a;短信群发可以快速传递企业、品牌、产品的信息&#xff0c;通过短信内容向潜在客户、用户、合作伙伴等发送最新的产品信息、活动信…

【新晋开源项目】聚合短信工具 Sms-Aggregation 加入 Dromara 开源社区

原创 wind dromara开源组织 2023-04-10 08:38 发表于四川 sms-aggregation 聚合短信发送工具 作者介绍 名称&#xff1a;wind dromara 开源组织成员&#xff0c;dromara/sms_aggregation 作者 java高级开发工程师&#xff0c;拥有丰富实战经验 个人空间&#xff1a;https:…

聚合短信API,手机验证登录

今天在项目中遇到了一个需要手机验证登录的需求&#xff0c;在这里简单的记录一下。聚合短信API&#xff0c;手机验证登录 首先需要在聚合平台里面进行公司资质认真 飞机票&#xff1a;https://www.juhe.cn/docs/api/id/54 认证成功后 点击我的接口 继续 进行短信模板审核 通…

用ChatGPT和六顶帽思考法帮助自己更好地决策和解决问题

当我们在解决复杂问题时&#xff0c;我们常常陷入单一视角的状态。创造性思维领域的先驱爱德华德博诺&#xff0c;提出了六顶帽思考法[1]&#xff0c;这意味着我们可以从六个不同的视角来思考一个问题&#xff0c;以实现高水平决策和解决问题。 每一顶“帽子”代表不同的视角。…

发现一个相当好的食物热量计算器!

厄&#xff0c;这两天没怎么吃东西&#xff0c;感觉瘦了些。特意去网上找了一个食物热量计算器&#xff0c;把自己吃的那点儿放进去算了一下&#xff0c;哇&#xff0c;远远低于每天实际消耗的热量&#xff01; 我琢磨着&#xff0c;怎么把这东西给下载下来用呢&#xff1f;

计算每日摄入量

1.每周减重 自重*0.7% 2.蛋白质量 每磅*&#xff08;0.8 ~1&#xff09; 3.坚持计划&#xff0c;多负荷训练 参考&#xff1a;https://zhuanlan.zhihu.com/p/44725585 每日总消耗量&#xff08;TDEE&#xff09;&#xff1a;由三个因素构成 1.摄食生热效应&#xff1a; …

每天坚持慢跑30分钟,一个月身体会有什么变化?

如果我告诉你身材不会有什么大变化&#xff0c;你是不是会绝望&#xff1f;但这是事实&#xff01; 保持坚持跑步习惯的人有两种&#xff1a; 第1种是纯粹热爱跑步&#xff0c;追求身体的长久健康&#xff0c;活力保持。 第2种是为了减肥&#xff0c;回归匀称标准的身材。 …

企业微信加密消息体_企业微信和个人微信有什么区别?个人微信可以接收企业微信消息吗?...

对于微信大家一定不陌生&#xff0c;它是当代集社交&#xff0c;支付等多种功能于一体的软件&#xff0c;使用人群多&#xff0c;范围广&#xff0c;但是现在随着公司业务的交流发展&#xff0c;越来越多人开始使用企业微信&#xff0c;那么你知道企业微信与个人微信有什么不同…

[NLP]LLM 训练时GPU显存耗用量估计

以LLM中最常见的Adam fp16混合精度训练为例&#xff0c;分析其显存占用有以下四个部分&#xff1a; GPT-2含有1.5B个参数&#xff0c;如果用fp16格式&#xff0c;只需要1.5G*2Byte3GB显存, 但是模型状态实际上需要耗费1.5B*1624GB. 比如说有一个模型参数量是1M&#xff0c;在…

power law

power law 中文有的叫幂率&#xff0c; 有的叫长尾理论。 一张图可以说明其思想&#xff1a; 再想power law和2:8原则是不是有一些相似。懒得算了&#xff0c;这两个都是形式化的描述&#xff0c;具体数字没有太大意义。 很奇妙的一点是&#xff0c;这个世界其实有时候就是这…

【Linux】进程信号之信号的处理

进程信号 三 一、信号的处理时机二、内核态与用户态1、内核态与用户态的转化2、重谈进程地址空间 三、信号的处理1、一般信号的处理流程2、捕捉信号的处理流程3、信号捕捉函数sigaction 一、信号的处理时机 在前面我们讲过信号产生和保存以后&#xff0c;我们知道进程对于产生…

power related

android的wake_lock介绍 拒绝Wakelock提高续航!安卓省电优化攻略 http://www.cnblogs.com/GnagWang/ ??who

2020-5-5

问题 D: 洁净无瑕 时间限制: 1 Sec 内存限制: 128 MB [提交] [状态] 题目描述 小X是一位富豪&#xff0c;酷爱收藏宝石。 在他的收藏柜中&#xff0c;从左到右依次摆放着各种形态不一的钻石。为了评价一颗钻石的美观程度&#xff0c;小X为每颗钻石赋予了一个洁净度ai。 小X…

day-5

1、模块 定义&#xff1a;模块&#xff0c;用一砣代码实现了某个功能的代码集合。 本质就是.py结尾的python文件&#xff08;变量&#xff0c;函数&#xff0c;类&#xff0c;逻辑&#xff09; 例&#xff1a;test.py 模块名&#xff1a;test类似于函数式…

5 Series Solutions

文章目录 this chapter, blend power series with solving ordinary differential equations. a class of linear (homogeneous) differential equations admitting solutions that can be represented as a power series. Due to the technicality, only second order. All…

Isolated power 板级小功率电源

电源模块体积单位通常使用砖来命名1/4砖、1/8砖 全砖&#xff1a;116.8*61.0*12.7mm 半砖&#xff1a;61.0*57.9*12.7mm 四分之一砖&#xff1a;57.9*36.8*8.1mm 八分之一砖&#xff1a;57.9*22.9*10.4mm 砖式DC/DC转换器的工作环境越来越恶劣&#xff0c;尽管这些模块产品…

linux umask:文件访问权限控制预设值

1. umask 定义 在 linux 系统中&#xff0c;umask 被定义在 /etc/profile 配置文件中&#xff0c;有一段 shell 脚本对 umask 是这么定义的。在 shell 会话输入命令&#xff1a; $ cat /etc/profile # 查看 /etc/profile 配置文件的内容 if [ $UID -gt 199 ] &&…

iOS 13.2升级后:iPhone、iPad频繁杀后台,怎么解决呢?

编辑&#xff5c;排版&#xff5c; 宅哥技术转载请联系商务合作给你开白名单来源&#xff1a;宅哥技术&#xff08;zg_jishu&#xff09; ---------♥--------- 杀后台 现在很多小伙伴都更新到了iOS13.2版本&#xff0c;更新完后很多朋友都说系统杀后台好严重&#xff0c;什么是…

分享如何升级macOS Catalina

了解如何下载和安装最新版 Mac 操作系统 macOS Catalina。 macOS Catalina 让您喜爱的所有 Mac 体验都更进一步。在三个全新的 Mac 应用程序中体验音乐&#xff0c;电视和播客。在 Mac 上畅玩您最喜欢的 iPad 应用。拿起 iPad 和 Apple Pencil 扩展您的工作空间&#xff0c;释放…

LeetCode700. 二叉搜索树中的搜索

700. 二叉搜索树中的搜索 文章目录 [700. 二叉搜索树中的搜索](https://leetcode.cn/problems/search-in-a-binary-search-tree/)一、题目二、题解方法一&#xff1a;迭代方法二&#xff1a;递归 带main函数测试用例 一、题目 给定二叉搜索树&#xff08;BST&#xff09;的根节…