当前位置: 首页 > news >正文

【Java】通过调用阿里云短信服务给手机发短信

1.先到阿里云的云市场购买短信服务,一般会提供免费调用次数,大概十几二十次

2.下滑查看API接口详情

3.编写代码调用该接口

3.1 导入依赖
        <!--阿里云sdk--><dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.5.3</version></dependency><!--fastjson--><dependency><groupId>com.alibaba</groupId><artifactId>fastjson</artifactId><version>1.2.47</version></dependency><!--httpClient--><dependency><groupId>org.apache.httpcomponents</groupId><artifactId>httpclient</artifactId><version>4.2.1</version></dependency><!--redis相关依赖--><dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-redis</artifactId></dependency>
3.2 接口配置(根据你购买的短信服务填写)

3.3 appcode在控制台复制

3.4 代码示例

Controller

     /*** * @param sendCodeDTO (type 发送验证码类型  1-注册 2-登录,3-修改手机号)* @return*/@PostMapping("/sendCode")@ApiOperation("发送短信验证码")public CommonResult sendCode(@RequestBody SendCodeDTO sendCodeDTO) {return userService.sendCode(sendCodeDTO);}
SendCodeDTO
@Data
public class SendCodeDTO {/*** 手机号*/private String phone;/*** 验证码类型 : 1-注册,2-登录,3-修改手机号*/private Integer type;}
CodeTypeEnum(验证码类型枚举)
public enum CodeTypeEnum {/*** 验证码类型 : 1-注册,2-登录,3-修改手机号*/REGISTER(1,"REGISTER"),LOGIN(2,"LOGIN"),EDIT(3,"EDIT");public static String getDescriptionByCode(Integer code){for(CodeTypeEnum value : CodeTypeEnum.values()){if(value.getCode().equals(code)){return value.getDesc();}}return null;}CodeTypeEnum(Integer code, String desc) {this.code = code;this.desc = desc;}private final Integer code;private final String desc;public Integer getCode() {return code;}public String getDesc() {return desc;}}
(单纯发个短信验证码的话照着API文档的请求示例就可以实现了,需要根据验证码做处理的话,一般得存到Redis中)

HttpUtils

public class HttpUtils {/*** get** @param host* @param path* @param method* @param headers* @param querys* @return* @throws Exception*/public static HttpResponse doGet(String host, String path, String method,Map<String, String> headers,Map<String, String> querys)throws Exception {HttpClient httpClient = wrapClient(host);HttpGet request = new HttpGet(buildUrl(host, path, querys));for (Map.Entry<String, String> e : headers.entrySet()) {request.addHeader(e.getKey(), e.getValue());}return httpClient.execute(request);}/*** post form** @param host* @param path* @param method* @param headers* @param querys* @param bodys* @return* @throws Exception*/public static HttpResponse doPost(String host, String path, String method,Map<String, String> headers,Map<String, String> querys,Map<String, String> bodys)throws Exception {HttpClient httpClient = wrapClient(host);HttpPost request = new HttpPost(buildUrl(host, path, querys));for (Map.Entry<String, String> e : headers.entrySet()) {request.addHeader(e.getKey(), e.getValue());}if (bodys != null) {List<NameValuePair> nameValuePairList = new ArrayList<NameValuePair>();for (String key : bodys.keySet()) {nameValuePairList.add(new BasicNameValuePair(key, bodys.get(key)));}UrlEncodedFormEntity formEntity = new UrlEncodedFormEntity(nameValuePairList, "utf-8");formEntity.setContentType("application/x-www-form-urlencoded; charset=UTF-8");request.setEntity(formEntity);}return httpClient.execute(request);}/*** Post String** @param host* @param path* @param method* @param headers* @param querys* @param body* @return* @throws Exception*/public static HttpResponse doPost(String host, String path, String method,Map<String, String> headers,Map<String, String> querys,String body)throws Exception {HttpClient httpClient = wrapClient(host);HttpPost request = new HttpPost(buildUrl(host, path, querys));for (Map.Entry<String, String> e : headers.entrySet()) {request.addHeader(e.getKey(), e.getValue());}if (StringUtils.isNotBlank(body)) {request.setEntity(new StringEntity(body, "utf-8"));}return httpClient.execute(request);}/*** Post stream** @param host* @param path* @param method* @param headers* @param querys* @param body* @return* @throws Exce
http://www.xdnf.cn/news/856639.html

相关文章:

  • IvorySQL Operator | 一键部署IvorySQL集群,高效管理与个性化配置尽在掌控
  • css从入门到精通【超详细笔记】,技术详细介绍
  • 2011年好莱坞大片索引
  • 手动杀毒,SOLA病毒,也称之为worm.script.bat.Agent、Trojan.Win32.Sola病毒)
  • 学习炒股必读的10本书
  • 非理性的积极力量(转)
  • Win32时间类型FILETIME/SYSTEMTIME/WINDOWSTIME(FILETIME这个名字很奇怪,其实他跟FILE并没有直接关系,只是很多File的API中,都以这个为时间的类型)
  • 3DS烧录卡?ACE3DS PRO?这是个闹剧(关于此事的新闻集合)
  • Https网站如何申请免费的SSL证书及操作使用指南
  • 网络嗅探器(影音神探) v4.63 绿色正式版
  • 微信小程序 Computed 示例项目教程
  • 华为桌面小程序在哪里_微信更新7.0.3 版本,小程序迎来桌面级体验?
  • 实现简单QQ聊天功能
  • AI数字人可以用在哪些行业,对这些行业有什么好处
  • 今日早报 每日精选15条新闻简报 每天一分钟 知晓天下事 8月20日,星期二
  • 解决springboot大片报红,提示:Add library xxx to classpath的问题
  • Perl正则表达式及其实例详解
  • d3dx9_43.dll丢失怎么解决,教你一招搞定的修复方法
  • 魔兽世界私服架设
  • 仓颉编程语言:I/O 流
  • PHP 零基础初学者手册(一)
  • Struts2.0的各种配置详解
  • 手机qq2.0 for android,QQ农场手机版|QQ农场for Android 2.02 官方安装版_手机游戏 www.qqtn.com...
  • Red Hat9.0 创建systemd定时器
  • 什么是cmnet和cmwap
  • 安卓4跑Linux,Android 4.0.4系统下实现apk的静默安装和启动
  • JSP基于ssm的图书管理系统cf2gt程序+源码+数据库+调试部署+开发环境
  • 南宁建站公司汇总
  • 计算机显示丢失msvcr100.dll的多种解决方法
  • 文件上传的整个流程