java http验证码_Java 云片验证码短信发送
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 云片验证码短信发送相关推荐
- 【转载】C语言,利用网络短信验证码接口实现手机短信发送
利用网络短信验证码接口实现手机短信发送 (历史代码,贴出学习) resource.h //resource.h//{{NO_DEPENDENCIES}} // Microsoft Visual C++ ...
- Java+Demo对接中国移动 云MAS短信发送(http协议详解,新测成功!)
一.登录官网,下载http接入文档(随着官网不断更新,可参考官网的文档) 官网地址为:云mas业务平台 进入云MAS管理平台,找到 管理-接口管理 的列表页. (必读:本文对接方式是 java引用ja ...
- 图片验证码、阿里云短信发送和验证的逻辑
图片验证码的生成 1.django 缓存设置 1.1 安装Django缓存模块 pip install django-redis==4.12.1 1.2 syl/settings.py中配置缓存 # ...
- java项目短信群发接口_JAVA实现第三方短信发送过程详解
想使代码生效需要注册: 在muven项目里面导入jar包 commons-codec commons-codec 1.4 commons-httpclient commons-httpclient 3 ...
- 云片 php sms接口视频,Laravel、云片网络短信发送PHP SDK
Note: 依赖guzzlehttp/guzzle 6,安装本此包时会默认安装此依赖,可能很多其他的第三方库依赖较低版本的guzzle,如guzzle 5 这个SDK主要是对 云片网首页 通过 com ...
- java获取短信验证码_Java如何获取短信验证码
[基于创蓝253云通讯平台---短信验证码接口调用demo] package com.bcloud.msg.http; import java.io.ByteArrayOutputStream; im ...
- 【日常记录】接入短信发送功能,为实现完整的注册功能做准备
接入阿里短信发送接口: 1.直接去阿里云[云市场]搜索[短信]随便选一个试用测试就行 打开后有相应的api说明 调用地址以及请求参数,可以自己去postman调试或者使用自带的[调试工具:去调试]. ...
- Java集成腾讯云的短信验证码
首先,你得在腾讯云上注册并开通短信服务. 第一步:创建短信应用 第二步:创建短信签名 第三步:在第二步成功后再创建短信模板 到这里就设置完成了,接下来是Java代码,通过腾讯给的java sdk接口实 ...
- java+vue3实现生成、验证图形验证码,和手机短信验证码
一.效果图 二.实现生成图形验证码.校验验证码 1.实现后端接口 ①控制层代码 /*** 生成图片验证码* time用于保证每次可以刷新图片验证码*/@GetMapping("authCod ...
最新文章
- 《C++ primer》--第10章
- 学机械也想转嵌入式?
- java类sample是公共的_应在名samle.java的文件_Andoid NDK编程 1 - 注册native函数
- java内存管理总结
- bootstrap时间格式化
- es6,es7,es8语法总结
- WIN10下使用VS2017的MSVC编译FFMPEG3.4.2动态静态库
- elasticsearch-head 集群健康值: 未连接
- python 上传文件到服务器(模拟网页前端上传)
- 蓝桥杯算法竞赛培训(二) 汉诺塔与STL
- zzulioj1116: 删除元素
- 如何使用 Python 操作 .npy 文件?详细教程分享
- CAS:1214891-99-2,BHQ猝灭剂BHQ-2 acid ,BHQ-2 Carboxylic Acid
- 桌面支持--PLM软件必须右键用管理员账号打开
- 在这个内卷的时代,你不要怪内卷
- Android中身份证正反面、营业执照横竖版的拍摄和裁剪
- 想驯服上古神兽吗?VR游戏《山海猎人》已登陆Viveport
- postgres 源码解析33 进程间通信--1
- python处理wrf气象数据_Python气象数据处理与绘图(11):矢量箭头图(风场,通量场)...
- upper_bound()函数的使用