点击前往:阿里大鱼 --- 短信接口调用错误码(错误原因及处理方式)

上一篇:阿里大鱼短信服务 --- 发送验证码、短信通知

下一篇:Java 集成阿里大鱼平台短信服务发送验证码 --- 补齐注册部分

用户注册之 -- 短信验证码(Java集成阿里大鱼短信服务)

1、分析

    1. 随机生成验证码
    1. 将随机生成的验证码,保存到 redis 中,(key: sms_register 手机号=随机值)
    1. 将随机生成的验证码,以短信的方式发送给用户

2、后端代码

2.1、阿里大鱼工具类(SmsUtil.java)

package com.czxy.util;import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsRequest;
import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.profile.DefaultProfile;
import com.aliyuncs.profile.IClientProfile;/*** Created on 17/6/7.* 短信API产品的DEMO程序,工程中包含了一个SmsDemo类,直接通过* 执行main函数即可体验短信产品API功能(只需要将AK替换成开通了云通信-短信产品功能的AK即可)* 工程依赖了2个jar包(存放在工程的libs目录下)* 1:aliyun-java-sdk-core.jar* 2:aliyun-java-sdk-dysmsapi.jar** 备注:Demo工程编码采用UTF-8* 国际短信发送请勿参照此DEMO*/
public class SmsUtil {//产品名称:云通信短信API产品,开发者无需替换static final String product = "Dysmsapi";//产品域名,开发者无需替换static final String domain = "dysmsapi.aliyuncs.com";//TODO 此处需要替换成开发者自己的AK(在阿里云访问控制台寻找)static final String accessKeyId = "自己的申请的ak";static final String accessKeySecret = "自己申请的ak";public static SendSmsResponse sendSms(String telephone, String code) throws ClientException {//可自助调整超时时间System.setProperty("sun.net.client.defaultConnectTimeout", "10000");      System.setProperty("sun.net.client.defaultReadTimeout", "10000");//初始化acsClient,暂不支持region化IClientProfile profile = DefaultProfile.getProfile("cn-hangzhou", accessKeyId, accessKeySecret);DefaultProfile.addEndpoint("cn-hangzhou", "cn-hangzhou", product, domain);IAcsClient acsClient = new DefaultAcsClient(profile);//组装请求对象-具体描述见控制台-文档部分内容SendSmsRequest request = new SendSmsRequest();//必填:待发送手机号request.setPhoneNumbers(telephone);//必填:短信签名-可在短信控制台中找到request.setSignName("短信签名");//必填:短信模板-可在短信控制台中找到request.setTemplateCode("短信模板");//可选:模板中的变量替换JSON串,如模板内容为"亲爱的${name},您的验证码为${code}"时,此处的值为request.setTemplateParam("{\"code\":"+code+"}");//选填-上行短信扩展码(无特殊需求用户请忽略此字段)//request.setSmsUpExtendCode("90997");//可选:outId为提供给业务方扩展字段,最终在短信回执消息中将此值带回给调用者request.setOutId("yourOutId");//hint 此处可能会抛出异常,注意catchSendSmsResponse sendSmsResponse = acsClient.getAcsResponse(request);return sendSmsResponse;}/*** 随机生成4位验证码*/public static String getNumber() {int number;//定义两变量Random ne = new Random();//实例化一个random的对象nenumber = ne.nextInt(9999 - 1000 + 1) + 1000;//为变量赋随机值1000-9999System.out.println("产生的随机数是:" + number);//输出return String.valueOf(number);}
}

AK查看

2.2、Java集成阿里大鱼短信服务发送验证码

环境使用的是:Spring Boot

之前写过一篇《Jedis使用》里面有整合 Spring Boot相关内容

导依赖(这里就放了 Redis 和 阿里大鱼短信服务 相关依赖,数据库的,工具类等自行导入)

<dependencies>  <!--redis--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency><dependency><groupId>redis.clients</groupId><artifactId>jedis</artifactId></dependency><!--阿里大鱼短信--><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.1.0</version></dependency><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-ros</artifactId><version>3.0.1</version></dependency>
<dependencies>

yml文件

#端口号
server:port: 8081
spring:application:name: cgwebservice   #服务名main:allow-bean-definition-overriding: truedatasource:           #数据源配置driver-class-name: com.mysql.jdbc.Driverurl: jdbc:mysql://127.0.0.1:3306/changgou_db?useUnicode=true&characterEncoding=UTF-8&serverTimezone=UTCusername: rootpassword: 1234druid:              #druid连接池配置initial-size: 5min-idle: 5max-active: 20max-wait: 1000test-on-borrow: trueredis:database:   0host: 127.0.0.1port: 6379#配置eureka(注册中心)
eureka:client:service-url:defaultZone: http://127.0.0.1:10086/eurekainstance:prefer-ip-address: trueip-address: 127.0.0.1instance-id: ${eureka.instance.ip-address}.${server.port}lease-renewal-interval-in-seconds: 3lease-expiration-duration-in-seconds: 10

创建 SmsController,调用阿里大鱼工具类,发送验证码

package com.czxy.controller;import com.aliyuncs.dysmsapi.model.v20170525.SendSmsResponse;
import com.czxy.pojo.User;
import com.czxy.utils.SmsUtil;
import com.czxy.vo.BaseResult;
import org.apache.commons.lang.RandomStringUtils;
import org.springframework.data.redis.core.StringRedisTemplate;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;import javax.annotation.Resource;
import java.util.concurrent.TimeUnit;
/*** @author 庭前云落* @Date 2020/3/22 9:03* @description*/
@RestController
@RequestMapping("/sms")
public class SmsController {@Resourceprivate StringRedisTemplate stringRedisTemplate;@PostMappingpublic BaseResult sendSms(@RequestBody User user) {try {//1、随机生成验证码String code = RandomStringUtils.randomNumeric(4);//2、存放到redis中,key:"sms_register"+手机号, values: 验证码,5分钟stringRedisTemplate.opsForValue().set("sms_register" + user.getMobile(), code, 5, TimeUnit.MINUTES);//3、发送验证码到手机SendSmsResponse smsResponse = SmsUtil.sendSms(user.getMobile(),code);//equalsIgnoreCase() 方法用于将字符串与指定的对象比较,不考虑大小写。if ("OK".equalsIgnoreCase(smsResponse.getCode())) {return BaseResult.ok("发送成功");} else {return BaseResult.error(smsResponse.getMessage());}} catch (Exception e) {long end = System.currentTimeMillis();return BaseResult.error("发送失败");}}
}

前端代码以后补上,手机收到验证码就完成了

别人出错可以说是踩雷,我基本上可以说是滚雷了,调用阿里大鱼的工具类能出的错25个,我滚到了差不多10个。

我是直接看阿里大鱼短信服务的api文档的,直接找短信口调用错误码里面有原因及建议处理方式。

点击前往:短信接口调用错误码

Java 集成阿里大鱼平台短信服务发送验证码到手机相关推荐

  1. Java 集成阿里大鱼平台短信服务发送验证码 --- 补齐注册部分

    下一篇:使用 Redis 用户登录,整合JWT 依旧是之前的分析图 1.后端 注册前需要再次进行服务端校验 用户名是否已被注册 手机号是否已被注册 验证码是否错误 验证码是否实现 密码使用 BCryp ...

  2. 阿里云-----云通信短信服务---发送验证码到手机

    阿里什么都做啊,今天发现了短信服务,测试了一下,可用,简单方便,不需要太多时间便搞定了,文章最后有源码下载. 1.首先你需要有阿里云账号---然后开通短信服务,记得在阿里云账号充2元,不然发送不成功 ...

  3. 对接阿里云sms短信服务发送验证码

    1.购买阿里云短信服务 2.申请签名 3.申请短信模板 4.获取密钥 5.maven依赖 <dependency><groupId>com.aliyun</groupId ...

  4. 使用阿里云的短信服务发送短信

    原文地址使用阿里云的短信服务发送短信 在给客户开发一个信息发送功能的时候,需要涉及到短信的发送,短信发送一般不同的厂商提供的接口不同,处理方式也不太一样,之前用的一个厂商的,提供了一个封装类就很容易发 ...

  5. 腾讯云短信服务发送验证码

    腾讯云短信服务发送验证码 1.前言 2.进入短信服务控制台 3.创建签名 4.创建模板 5.短信-应用管理-应用列表 6.创建密钥 7.SpringBoot实现短信验证码发送 7.1 引入依赖 7.2 ...

  6. Java 对接 阿里云 的短信服务完成短信的发送与查询

    一.开通阿里云短信服务,为开发时需要用到的信息做准备 1.注册或者使用自己的支付宝账号登录阿里云官网 2.搜索并找到短信服务,进行开通(开通是不要钱的,发送短信的时候才需要钱) 3.注册自己的短信签名 ...

  7. PHP对接阿里大鱼实现短信的发送

    背景知识: 手机验证码这个功能几乎哪里都可以看到,那么PHP如何实现手机验证码的发送呢?下面介绍PHP对接阿里大鱼实现短信验证码发送. 1.首先登陆阿里云,点击控制台: 2.选择短信服务: 3.由于阿 ...

  8. 2021最新 使用阿里云的短信服务发送短信

    在给客户开发一个信息发送功能的时候,需要涉及到短信的发送,短信发送一般不同的厂商提供的接口不同,处理方式也不太一样,之前用的一个厂商的,提供了一个封装类就很容易发送短息,因此都是基于HTTP协议做的一 ...

  9. java实现阿里云短信服务发送验证码

    在写注册接口时,需引入短信第三方接口,故使用了阿里云短信服务,在这里简单描述一下 1.引入依赖 <!--手机发送短信验证码--><dependency><groupId& ...

最新文章

  1. LeetCode实战:最长有效括号
  2. vue中v-model是个啥?
  3. 存储过程学习三(创建存储过程实例)
  4. C++中的虚函数与纯虚函数
  5. 2017年第八届蓝桥杯 - 省赛 - C/C++大学A组 - C. 魔方状态
  6. AWS S3 Windows系统下的文件夹上传基于python
  7. c语言打印%-6llu,C语言-输出指定个数的质数
  8. python实现 wifi密码 破解-密码字典篇【本篇文章仅供娱乐,请不要做非法用途】
  9. python实现DDA算法
  10. opencv 表示图像的IplImage
  11. SpringAOP简单案例
  12. iView 日期时间选择器设置开始时间至结束时间限制
  13. 大学生网课答案查询公众号搭建教程
  14. Saliency Detection: A Spectral Residual Approach 阅读笔记
  15. Generalized Focal Loss
  16. C# Xamarin For Android移动开发项目实战篇
  17. 【物联网+区块链=?】展锐、蚂蚁链、广和通联合发布可信上链模组
  18. the installation cannot continue as the installer file may be damaged. Download the installer file
  19. rv1108 MAC 接口的简介
  20. 最华丽的linux版本,史上最华丽的发行版Linux Deepin 2013体验

热门文章

  1. WKWebView常用delegate
  2. 一看就懂关于阿里云服务器地域和可用区的选择方法
  3. CountDownLatch用法详解
  4. CSS同时设置绝对定位top和bottom属性
  5. Apollo Planning(四)
  6. vue2基础 - vue2 动态组件和异步组件使用
  7. Web:用 img插入图片的细节
  8. oracle查看expdp进度,备份之监控数据备份恢复完成进度(EXPDP/IMPDP/RMAN)
  9. System.ComponentModel.Win32Exception (0x80004005) 0x80004005
  10. Django关系类型字段