官方文档:https://help.aliyun.com/document_detail/101414.html?spm=a2c4g.11186623.6.626.2cef6220yxh5l7

jar包下载地址:https://yvioo.lanzous.com/b00nos2le
                       密码:383m

maven依赖

 <dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.0.6</version> <!-- 注:如提示报错,先升级基础包版,无法解决可联系技术支持 -->
</dependency> <dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-dysmsapi</artifactId>
<version>1.1.0</version>
</dependency>

Message.java  短信实体类

public class Message {
private String mobile;
private String signName;
private String TemplateCode;
private String TemplateParam; public String getMobile() {
return this.mobile;
} public void setMobile(String mobile) {
this.mobile = mobile;
} public String getSignName() {
return this.signName;
} public void setSignName(String signName) {
this.signName = signName;
} public String getTemplateCode() {
return this.TemplateCode;
} public void setTemplateCode(String templateCode) {
this.TemplateCode = templateCode;
} public String getTemplateParam() {
return this.TemplateParam;
} public void setTemplateParam(String templateParam) {
this.TemplateParam = templateParam;
} public Message(String mobile, String signName, String templateCode, String templateParam) {
this.mobile = mobile;
this.signName = signName;
this.TemplateCode = templateCode;
this.TemplateParam = templateParam;
} public Message() {
}
}
SendMessageUtil.java
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; import java.util.Random; public class SendMessageUtil {
static final String product = "Dysmsapi";
static final String domain = "dysmsapi.aliyuncs.com";
static final String accessKeyId = "";
static final String accessKeySecret = ""; public static SendSmsResponse sendSms(Message message) throws ClientException {
System.setProperty("sun.net.client.defaultConnectTimeout", "10000");
System.setProperty("sun.net.client.defaultReadTimeout", "10000");
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(message.getMobile());
request.setSignName(message.getSignName());
request.setTemplateCode(message.getTemplateCode());
request.setTemplateParam(message.getTemplateParam());
SendSmsResponse sendSmsResponse = (SendSmsResponse) acsClient.getAcsResponse(request);
return sendSmsResponse;
} public static String getSixNum() {
String str = "0123456789";
StringBuilder sb = new StringBuilder(4); for (int i = 0; i < 6; ++i) {
char ch = str.charAt((new Random()).nextInt(str.length()));
sb.append(ch);
} return sb.toString();
} }

Test.java 调用方法

具体的代码逻辑可以自行完善

@RequestMapping("/sendRegisterMessage")
@ResponseBody
public void sendMessage(String mobile, HttpServletRequest request, HttpServletResponse response, ModelMap model) {
JSONObject object = new JSONObject();
String code = "500";
String msg = "";
if (StringUtils.isBlank(mobile)) {
code = "201";
object.put("code", code);
ResponseUtils.renderJson(response, "" + object);
} else {
JSONObject param = new JSONObject();
param.put("code", SendMessageUtil.getSixNum());
System.out.println("注册短信验证码:" + param.getString("code"));
Message message = new Message(mobile, "短信签名", "短信模板ID", "" + param); try {
SendSmsResponse sendSmsResponse = SendMessageUtil.sendSms(message);
if ("OK".equalsIgnoreCase(sendSmsResponse.getCode())) {
code = "200";
} else {
code = "202";
} msg = sendSmsResponse.getMessage();
} catch (Exception var11) {
var11.printStackTrace();
} object.put("code", code);
object.put("msg", msg);
object.put("msgCode", "" + param.get("code"));
ResponseUtils.renderJson(response, "" + object);
}
}

  

js页面方法调用;https://www.cnblogs.com/pxblog/p/10529441.html

JAVA调用阿里云短信接口的更多相关文章

  1. Java调用阿里云短信接口发送手机验证码

    前五步可参考阿里云服务文档:https://help.aliyun.com/document_detail/59210.html?spm=a2c4g.11174283.4.1.2b152c42DoJ7 ...

  2. java 调用阿里云短信接口,报InvalidTimeStamp.Expired : Specified time stamp or date value is expired.

    官网解释: 问题所在: 自己的电脑(或者服务器) 的时间与阿里云的服务器时间 相差15分钟了. 解决方法 : 把自己的电脑时间 (或者服务器)的时间 改成标准的北京时间就行了.

  3. Java调用阿里云短信通道服务【千锋】

    这里我们使用SpringBoot 来调用阿里通信的服务. 阿里通信,双11.收到短信,日发送达6亿条.保障力度非常高. 使用的步骤: 1.1. 第一步:需要开通账户 1.2. 第二步:阅读接口文档 1 ...

  4. 零基础大数据入门教程:Java调用阿里云短信通道服务

    这里我们使用SpringBoot 来调用阿里通信的服务. 阿里通信,双11.收到短信,日发送达6亿条.保障力度非常高. 使用的步骤: 1.1. 第一步:需要开通账户 1.2. 第二步:阅读接口文档 1 ...

  5. php与阿里云短信接口接入

    使用阿里云短信API,需要在控制台获取以下必要参数,其中需要自己手机验证+官方审核多次,尤其审核需要保持耐心. 1. accessKeyId  相当于你的个人账户密钥: 2. accessKeySec ...

  6. 使用Node.js调用阿里云短信的发送以及接收

    为了使用Node.js调用阿里云短信服务,我自己写了个npm包, 目前实现了: 使用Node.js调用阿里云短信服务,发送短信: 使用Node.js调用阿里云短信服务以及MNS服务,接收用户上行短信 ...

  7. 阿里云短信接口开发实践(Java

    随着互联网的兴起,各行各业的需求都在不断的增加.随着业务的扩大,企业给用户发送短信验证码的业务,也是如火如荼.在这里,calvin给各位开发者推荐阿里云短信平台.原因有二:1.接入较简单,开发成本低 ...

  8. 移动端获取短信验证码java实现——阿里云短信服务

    需求:移动端输入手机号,获取验证码.点击登录,验证验证码是否输入错误.是否超时等情况,一旦校验通过,将用户数据保存到数据中(业务逻辑). 前提:注册阿里用户,开通短信服务,申请key.秘钥.签名.短信 ...

  9. 浏览器端获取短信验证码java实现——阿里云短信服务

    需求:浏览器端输入手机号,获取验证码.点击登录,验证验证码是否输入错误.是否超时等情况,一旦校验通过,将用户数据保存到数据中(业务逻辑). 前提:注册阿里用户,开通短信服务,申请key.秘钥.签名.短 ...

随机推荐

  1. NOI2021 去不了记

    没错,由于某些 zszz 的原因,我是真的去不了了(指去不了 ZJ) Day -11 ~ -7 - 2021.7.12 - 2021.7.16 令人自闭的 ISIJ 终于结束了----From ycx ...

  2. Codeforces 848D - Shake It!(DP)

    Codeforces 题面传送门 & 洛谷题面传送门 hot tea 一道. 首先我们考虑这个奇奇怪怪的最小割有什么等价的表达.不难发现,如果我们选择了 \(S\to T\) 这条边并加入了一 ...

  3. DTOJ 4030: 排列计数

    [题目描述] 求有多少个1到n的排列满足恰有$k$对在排列中相邻的数满足前小于后,答案对2012取模. [输入] 一行2个正整数$n,k$. [输出] 输出一个整数表示答案. [样例输入] 5  2 ...

  4. 【模板】网络最大流(EK、Dinic、ISAP)(网络流)/洛谷P3376

    题目链接 https://www.luogu.com.cn/problem/P3376 题目大意 输入格式 第一行包含四个正整数 \(n,m,s,t\),分别表示点的个数.有向边的个数.源点序号.汇点 ...

  5. python生成器浅析

    A 'generator' is a function which returns a generator iterator. It looks like a normal function exce ...

  6. accent, access, accident

    accent A colon (:) is used to represent a long vowel [元音], e.g. sheet /ʃiːt/ and shit /ʃit/. The wor ...

  7. 『学了就忘』Linux启动引导与修复 — 68、Linux系统运行级别

    目录 1.Linux系统运行级别介绍 2.查看运行级别 3.修改当前系统的运行级别 4.系统默认运行级别 5./etc/rc.d/rc.local文件说明 1.Linux系统运行级别介绍 Linux默 ...

  8. 零基础学习java------day8------javabean编写规范,继承,static关键字,代码块,单例设计模式

    0. 今日内容提要 1. javabean书写规范 javabean:一个普通的类,用来描述事物的类,里面不包含任何的业务逻辑,只是用来存储数据. 比如:Teacher,Student,Mobile. ...

  9. Oracle SQL中join方式总结

    在ORACLE数据库中,表与表之间的SQL JOIN方式有多种(不仅表与表,还可以表与视图.物化视图等联结).SQL JOIN其实是一个逻辑概念,像NEST LOOP JOIN. HASH JOIN等 ...

  10. 登录界面.jsp

    <!DOCTYPE html><html lang="zh-CN"> <head> <meta charset="utf-8&q ...