1.获取云片APIKEY

登录云片官网:www.yunpian.com 获取APIKEY

2.查看API文档

官网首页 进入API文档页面

短信分类.png

3.java配置

配置文件中添加

captcha:

apikey: xxxxxx

url: https://sms.yunpian.com/v2/sms/single_send.json

text: 【XXX】亲爱的%s,您的验证码是%s。有效期为%s秒,请尽快验证

time: 120

4.编写bean,从配置文件中获取对应参数

@Component

@ConfigurationProperties(prefix = "spring.captcha")

public class CaptchaConfig {

private String apikey;

private String url;

private String text;

private String time;

public String getTime() {

return time;

}

public void setTime(String time) {

this.time = time;

}

public String getText() {

return text;

}

public void setText(String text) {

this.text = text;

}

public String getUrl() {

return url;

}

public void setUrl(String url) {

this.url = url;

}

public String getApikey() {

return apikey;

}

public void setApikey(String apikey) {

this.apikey = apikey;

}

}

5.控制类

@RestController

@RequestMapping("api")

@Api(value = "Message-Api", description = "短信发送相关API")

public class CaptchaRestController {

@Autowired

private SmsService smsService;

@Autowired

private CaptchaConfig captchaConfig;

/**

* 发送短信验证码

*

* @param request 请求参数

*/

@RequestMapping(value = "/verification/get", method = RequestMethod.POST)

@ApiOperation(notes = "发送短信验证码", httpMethod = "POST", value = "发送短信验证码")

public Response sendCaptchaMessage(@RequestBody Request request) {

CaptchaGetParam param = request.getParam();

Response response = new Response<>();

String mobile = param.getPhone();

if(!ValidatorUtil.validatorPhone(mobile)){

response.setResult(ConstantDef.RESPONSE.FAIL);

response.setMessage("请输入正确的号码!");

response.setData(new HashMap());

return response;

}

String captcha = SmsService.createRandom(Boolean.TRUE, 6);

try {

return smsService.sendCaptchaMessage(mobile, captcha);

} catch (IOException e) {

response.setResult(ConstantDef.RESPONSE.FAIL);

response.setMessage("验证码发送失败!");

response.setData(new HashMap());

return response;

}

}

}

6.实现类

@Service

public class SmsService {

private static Logger logger = LoggerFactory.getLogger(SmsService.class);

@Autowired

private CaptchaConfig captchaConfig;

public Response sendCaptchaMessage(String phone, String captcha) throws IOException {

Response response = new Response<>();

String message = String.format(captchaConfig.getText(), "用户", captcha, captchaConfig.getTime());

HttpClient httpclient = new HttpClient();

PostMethod post = new PostMethod(captchaConfig.getUrl());

post.getParams().setParameter(HttpMethodParams.HTTP_CONTENT_CHARSET, "UTF-8");

post.addParameter("apikey", captchaConfig.getApikey());

post.addParameter("text", message);

post.addParameter("mobile", phone);

int status = httpclient.executeMethod(post);

String info = new String(post.getResponseBody(), "UTF-8");

logger.debug(info);

if(status == 200){

CacheManager.getInstance().putListener().put(phone, captcha, Long.parseLong(captchaConfig.getTime()));

response.setResult(ConstantDef.RESPONSE.SUCCESS);

response.setMessage("验证码发送成功!");

response.setData(new HashMap());

return response;

}else {

JSONObject jsonObject= JSON.parseObject(info);

response.setResult(ConstantDef.RESPONSE.FAIL);

response.setMessage((String) jsonObject.get("detail"));

response.setData(new HashMap());

return response;

}

}

/**

* 创建指定数量的随机字符串

*

* @param numberFlag 是否是数字

* @param length

* @return

*/

public static String createRandom(boolean numberFlag, int length) {

String retStr = "";

String strTable = numberFlag ? "1234567890" : "1234567890abcdefghijkmnpqrstuvwxyz";

int len = strTable.length();

boolean bDone = true;

do {

retStr = "";

int count = 0;

for (int i = 0; i < length; i++) {

double dblR = Math.random() * len;

int intR = (int) Math.floor(dblR);

char c = strTable.charAt(intR);

if (('0' <= c) && (c <= '9')) {

count++;

}

retStr += strTable.charAt(intR);

}

if (count >= 2) {

bDone = false;

}

} while (bDone);

return retStr;

}

}

java http验证码_Java 云片验证码短信发送相关推荐

  1. 【转载】C语言,利用网络短信验证码接口实现手机短信发送

    利用网络短信验证码接口实现手机短信发送 (历史代码,贴出学习) resource.h //resource.h//{{NO_DEPENDENCIES}} // Microsoft Visual C++ ...

  2. Java+Demo对接中国移动 云MAS短信发送(http协议详解,新测成功!)

    一.登录官网,下载http接入文档(随着官网不断更新,可参考官网的文档) 官网地址为:云mas业务平台 进入云MAS管理平台,找到 管理-接口管理 的列表页. (必读:本文对接方式是 java引用ja ...

  3. 图片验证码、阿里云短信发送和验证的逻辑

    图片验证码的生成 1.django 缓存设置 1.1 安装Django缓存模块 pip install django-redis==4.12.1 1.2 syl/settings.py中配置缓存 # ...

  4. java项目短信群发接口_JAVA实现第三方短信发送过程详解

    想使代码生效需要注册: 在muven项目里面导入jar包 commons-codec commons-codec 1.4 commons-httpclient commons-httpclient 3 ...

  5. 云片 php sms接口视频,Laravel、云片网络短信发送PHP SDK

    Note: 依赖guzzlehttp/guzzle 6,安装本此包时会默认安装此依赖,可能很多其他的第三方库依赖较低版本的guzzle,如guzzle 5 这个SDK主要是对 云片网首页 通过 com ...

  6. java获取短信验证码_Java如何获取短信验证码

    [基于创蓝253云通讯平台---短信验证码接口调用demo] package com.bcloud.msg.http; import java.io.ByteArrayOutputStream; im ...

  7. 【日常记录】接入短信发送功能,为实现完整的注册功能做准备

    接入阿里短信发送接口: 1.直接去阿里云[云市场]搜索[短信]随便选一个试用测试就行 打开后有相应的api说明 调用地址以及请求参数,可以自己去postman调试或者使用自带的[调试工具:去调试]. ...

  8. Java集成腾讯云的短信验证码

    首先,你得在腾讯云上注册并开通短信服务. 第一步:创建短信应用 第二步:创建短信签名 第三步:在第二步成功后再创建短信模板 到这里就设置完成了,接下来是Java代码,通过腾讯给的java sdk接口实 ...

  9. java+vue3实现生成、验证图形验证码,和手机短信验证码

    一.效果图 二.实现生成图形验证码.校验验证码 1.实现后端接口 ①控制层代码 /*** 生成图片验证码* time用于保证每次可以刷新图片验证码*/@GetMapping("authCod ...

最新文章

  1. 《C++ primer》--第10章
  2. 学机械也想转嵌入式?
  3. java类sample是公共的_应在名samle.java的文件_Andoid NDK编程 1 - 注册native函数
  4. java内存管理总结
  5. bootstrap时间格式化
  6. es6,es7,es8语法总结
  7. WIN10下使用VS2017的MSVC编译FFMPEG3.4.2动态静态库
  8. elasticsearch-head 集群健康值: 未连接
  9. python 上传文件到服务器(模拟网页前端上传)
  10. 蓝桥杯算法竞赛培训(二) 汉诺塔与STL
  11. zzulioj1116: 删除元素
  12. 如何使用 Python 操作 .npy 文件?详细教程分享
  13. CAS:1214891-99-2,BHQ猝灭剂BHQ-2 acid ,BHQ-2 Carboxylic Acid
  14. 桌面支持--PLM软件必须右键用管理员账号打开
  15. 在这个内卷的时代,你不要怪内卷
  16. Android中身份证正反面、营业执照横竖版的拍摄和裁剪
  17. 想驯服上古神兽吗?VR游戏《山海猎人》已登陆Viveport
  18. postgres 源码解析33 进程间通信--1
  19. python处理wrf气象数据_Python气象数据处理与绘图(11):矢量箭头图(风场,通量场)...
  20. upper_bound()函数的使用

热门文章

  1. 【云原生之Docker实战】部署轻量级容器云管理平台Humpback
  2. Windows中安装iPhone开发环境
  3. 如何根据TTL判断主机的操作系统
  4. 人大金仓数据库.net core 开发接口
  5. 使用@RequestBody 接收前端传到后端的json数据时,页面出现415,获取不到Cookie
  6. 类似点亮星星打分功能
  7. 7、网络编程-TCP简介
  8. Spring是什么及Spring的优点
  9. MacOS Pycharm 配置 anaconda 环境
  10. docker国内下载通道