接口文档 : https://zz.253.com/v5.html#/api_word

/*** 手机号码限制* @author w* */
@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Documented
@Inherited
public @interface SmsLimiter {/*** 从第一次访问接口的时间到cycle周期时间内,无法超过frequency次,默认10次* */int frequency() default 1;/*** 周期时间, 默认60s* */int duration() default 60;/*** 返回的错误信息* */String message() default "短信验证码每分钟仅可发送一次";
}
import java.io.Serializable;/*** * @ClassName: RpcBaseResponseResult* @Description: (基础响应结果)* @date 2016年9月21日 下午2:06:37*/
public class RpcBaseResponseResult implements Serializable{private static final long serialVersionUID = 1L;//0表示成功,1表示失败状态编码private int  status  = 0;public final static Integer STATUS_SUCCESS = 0;public final static Integer STATUS_ERROR = 1;private String message = "";private Object data;public RpcBaseResponseResult() { }public RpcBaseResponseResult(Object data) {this.data = data;}public Object getData() {return data;}public void setData(Object data) {this.data = data;}public int getStatus() {return status;}public void setStatus(int status) {this.status = status;}public String getMessage() {return message;}public void setMessage(String message) {this.message = message;}@Overridepublic String toString() {return "RpcBaseResponseResult [data=" + data + "]";}}
import java.io.Serializable;/**** @author tianyh* @Description:普通短信发送实体类*/
public class SmsSendRequest implements Serializable {/*** 创蓝API账号,必填*/private String account;/*** 创蓝API密码,必填*/private String password;/*** 短信内容。长度不能超过536个字符,必填*/private String msg;/*** 机号码。多个手机号码使用英文逗号分隔,必填*/private String phone;/*** 定时发送短信时间。格式为yyyyMMddHHmm,值小于或等于当前时间则立即发送,默认立即发送,选填*/private String sendtime;/*** 是否需要状态报告(默认false),选填*/private String report;/*** 下发短信号码扩展码,纯数字,建议1-3位,选填*/private String extend;/*** 该条短信在您业务系统内的ID,如订单号或者短信发送记录流水号,选填*/private String uid;public SmsSendRequest() {}public SmsSendRequest(String account, String password, String msg, String phone) {super();this.account = account;this.password = password;this.msg = msg;this.phone = phone;}public SmsSendRequest(String account, String password, String msg, String phone, String report) {super();this.account = account;this.password = password;this.msg = msg;this.phone = phone;this.report=report;}public SmsSendRequest(String account, String password, String msg, String phone, String report, String sendtime) {super();this.account = account;this.password = password;this.msg = msg;this.phone = phone;this.sendtime=sendtime;this.report=report;}public SmsSendRequest(String account, String password, String msg, String phone, String sendtime, String report, String uid) {super();this.account = account;this.password = password;this.msg = msg;this.phone = phone;this.sendtime=sendtime;this.report=report;this.uid=uid;}public String getAccount() {return account;}public void setAccount(String account) {this.account = account;}public String getPassword() {return password;}public void setPassword(String password) {this.password = password;}public String getMsg() {return msg;}public void setMsg(String msg) {this.msg = msg;}public String getPhone() {return phone;}public void setPhone(String phone) {this.phone = phone;}public String getSendtime() {return sendtime;}public void setSendtime(String sendtime) {this.sendtime = sendtime;}public String getReport() {return report;}public void setReport(String report) {this.report = report;}public String getExtend() {return extend;}public void setExtend(String extend) {this.extend = extend;}public String getUid() {return uid;}public void setUid(String uid) {this.uid = uid;}
}

import java.io.Serializable;/**** @author tianyh* @Description:普通短信发送响应实体类*/
public class SmsSendResponse implements Serializable {/*** 响应时间*/private String time;/*** 消息id*/private String msgId;/*** 状态码说明(成功返回空)*/private String errorMsg;/*** 状态码(详细参考提交响应状态码)*/private String code;public String getTime() {return time;}public void setTime(String time) {this.time = time;}public String getMsgId() {return msgId;}public void setMsgId(String msgId) {this.msgId = msgId;}public String getErrorMsg() {return errorMsg;}public void setErrorMsg(String errorMsg) {this.errorMsg = errorMsg;}public String getCode() {return code;}public void setCode(String code) {this.code = code;}@Overridepublic String toString() {return "SmsSingleResponse [time=" + time + ", msgId=" + msgId + ", errorMsg=" + errorMsg + ", code=" + code+ "]";}
}
import java.io.BufferedReader;
import java.io.InputStreamReader;
import java.io.OutputStream;
import java.net.HttpURLConnection;
import java.net.URL;//import java.io.PrintWriter;/**** @Description:HTTP 请求*/
public class ChuangLanSmsUtil {/**** @author tianyh* @Description* @param path* @param postContent* @return String* @throws*/public static String sendSmsByPost(String path, String postContent) {URL url = null;try {url = new URL(path);HttpURLConnection httpURLConnection = (HttpURLConnection) url.openConnection();httpURLConnection.setRequestMethod("POST");// 提交模式httpURLConnection.setConnectTimeout(10000);//连接超时 单位毫秒httpURLConnection.setReadTimeout(10000);//读取超时 单位毫秒// 发送POST请求必须设置如下两行httpURLConnection.setDoOutput(true);httpURLConnection.setDoInput(true);httpURLConnection.setRequestProperty("Charset", "UTF-8");httpURLConnection.setRequestProperty("Content-Type", "application/json");//           PrintWriter printWriter = new PrintWriter(httpURLConnection.getOutputStream());
//          printWriter.write(postContent);
//          printWriter.flush();httpURLConnection.connect();OutputStream os=httpURLConnection.getOutputStream();os.write(postContent.getBytes("UTF-8"));os.flush();StringBuilder sb = new StringBuilder();int httpRspCode = httpURLConnection.getResponseCode();if (httpRspCode == HttpURLConnection.HTTP_OK) {// 开始获取数据BufferedReader br = new BufferedReader(new InputStreamReader(httpURLConnection.getInputStream(), "utf-8"));String line = null;while ((line = br.readLine()) != null) {sb.append(line);}br.close();return sb.toString();}} catch (Exception e) {e.printStackTrace();}return null;}}

controller里面 方法.

 @Autowired(required = false)private SmsSendService smsSendService;public static String getSmsVerification(String verification){String template = "您的验证码为"+verification+",该验证码1分钟内有效,请不要将验证码透漏给第三人,如非本人操作请忽略!";return template;}@GetMapping(value = "/getPhoneCode")@ResponseBody@SmsLimiterpublic RpcBaseResponseResult getPhoneCode(String fUserPhone) {RpcBaseResponseResult res = new RpcBaseResponseResult();RpcBaseResponseResult rpcResult = null;String randNum = RandNumUtil.getRandNum(4);//发送短信//logger.info("=======发送短信======================{}===={}", fUserPhone, randNum);/**更换短信接口**/String msg = "【***科技】" + getSmsVerification(randNum); // 短信内容。长度不能超过536个字符,其中“【***科技】”是签名。必填rpcResult = smsSendService.sendMassage(msg,fUserPhone); // 发送短信//logger.info(rpcResult.getMessage());res.setMessage(rpcResult.getMessage());res.setStatus(rpcResult.getStatus());res.setData(rpcResult.getData());return res;}
public interface SmsSendService {/*** 验证码通知短信* @Description: TODO(短信发送)* @param msg 设置您要发送的内容:其中“【】”中括号为运营商签名符号,多签名内容前置添加提交* @param phone 手机号码* @return*/RpcBaseResponseResult sendMassage(String msg, String phone);}
@Service("smsSendService")
public class SmsSendServiceImpl implements SmsSendService {public static final String charset = "utf-8";// API账号(验证码通知短信)public static String account = "账号";// API密码(验证码通知短信)public static String password = "密码";/**** 发送验证码通知短信* @Description: TODO(短信发送)* @param msg 设置您要发送的内容:其中“【】”中括号为运营商签名符号,多签名内容前置添加提交* @param phone 手机号码* @return*/@Overridepublic RpcBaseResponseResult sendMassage(String msg, String phone) {RpcBaseResponseResult result = new RpcBaseResponseResult();//短信发送的URL 请登录zz.253.com 获取完整的URL接口信息String smsSingleRequestServerUrl = "https://smssh1.253.com/msg/send/json";//状态报告String report= "true";try {SmsSendRequest smsSingleRequest = new SmsSendRequest(account, password, msg, phone,report);String requestJson = JSON.toJSONString(smsSingleRequest);System.out.println("before request string is: " + requestJson);String response = ChuangLanSmsUtil.sendSmsByPost(smsSingleRequestServerUrl, requestJson);System.out.println("response after request result is :" + response);SmsSendResponse smsSingleResponse = JSON.parseObject(response, SmsSendResponse.class);System.out.println("response  toString is :" + smsSingleResponse);result.setStatus(Integer.parseInt(smsSingleResponse.getCode())); // 状态码result.setMessage(smsSingleResponse.getErrorMsg()); // 状态码说明(成功返回空)result.setData(smsSingleRequest.getMsg());} catch (Exception e){e.printStackTrace();result.setStatus(RpcBaseResponseResult.STATUS_ERROR);result.setMessage("系统错误...");}return result;}}

注意:调试访问的时候 如报错117 客户端ip错误 需要联系客服加上自己的ip就好了

java 短信验证码(创蓝接口)调用相关推荐

  1. java短信验证码实现_社交APP开发短信验证是通过什么技术实现

    我们已经习惯通过手机APP来解决我们生活中的一些问题,社交APP用来聊天交友,购物APP用来购买生活所需用品,游戏APP用来消遣娱乐,移动互联网行业正在飞速发展. 不难发现我们手机里面的各种APP都有 ...

  2. 容联云通讯php短信接口,开发中使用 【容联 云通信】获取短信验证码的 Javascript 接口...

    开发中使用 [容联 云通信]获取短信验证码的 Javascript 接口 在平台应用列表添加应用. 在测试号码中绑定测试手机号码,只有这个号码能接收验证短信. 在项目中绑定配置:将控制台首页的开发者主 ...

  3. 魔方APP项目-05-注册功能实现,手机号唯一验证接口、客户端进行手机号验证、保存用户注册信息接口、客户端用户进行注册、使用云通讯发送短信,服务端实现发送短信验证码的api接口、客户端实现点击发送短信

    用户模块 注册功能实现 1.手机号码唯一验证接口 在开发中,针对客户端提交的数据进行验证或提供模型数据转换格式成字典给客户端.可以使用Marshmallow模块来进行. 为了方便导包,所以我们设置当前 ...

  4. 怎样解决PHP、JAVA短信验证码api发送失败?

    初次使用PHP.JAVA短信验证码平台接口API,很多企业用户都会遇到一些问题,尤其是验证码发送失败的问题,更是数不胜数.那么,短信验证码为什么会发送失败呢?如何才能快速解决呢?下面为大家详细说一说验 ...

  5. java 防止恶意刷短信验证码_用户使用java短信验证码时要做好三个保护

    java短信验证码的出现,对企业来说,是减少了运营费.人工费.操作费,带来了方便也带了利益:对于广大用户朋友来说,它也保护了个人的信息安全,确保了自己网上支付时没有威胁风险.但是有些朋友对于java短 ...

  6. thinkphp+小程序手机短信验证码(防止恶意调用短信接口)

    thinkphp+小程序手机短信验证码 前言 一.短信轰炸是什么? 二.小程序准备 1.wxml 2.wxss 3.js(使用小程序定时器限制) 三.后台接口(ThinkPHP) 前言 一.短信轰炸是 ...

  7. java短信验证码功能发送的验证码如何校验_Java实现发送短信验证码功能

    一个发送短信验证码的功能,使用的是信易通的短信平台接口,然后在Java中使用HttpClient模拟POST请求或者GET请求(看短信平台要求,一般的情况下都是POST请求),调用短信平台提供的接口( ...

  8. java短信验证码功能发送的验证码如何校验_发送短信验证码和邮箱验证码—Java实现...

    短信验证码 短信验证码都是调用一些接口来进行短信的发送,短信验证码在登录.注册等操作中使用的最广泛,本文这一节演示如何使用Java制作一个简单的短信验证码登录. 我这里演示使用的是聚合数据的短信接口( ...

  9. ZABBIX短信告警-创蓝短信平台

    1.登录短信平台后台,查看教程并下载不同脚本语言模板,填入以下信息 #创蓝接口域名 host = "smssh1.253.com" #创蓝API账号 account = " ...

最新文章

  1. Colly源码解析——框架
  2. 高影响力期刊iMeta扬帆起航!第一篇文章已上线!
  3. 对sigma pix 的理解
  4. python 播放视频 ftp_利用 Python 实现文件自动备份到 ftp 服务器
  5. 汽车维修保养记录php源码,汽车维修保养记录
  6. 自由源自于自律 及其他三则分享
  7. 万字总结!springcloud分布式限流
  8. ASP.NET MVC中的ActionResult--总结
  9. linux查cpu命令4可以选择哪些运动,Linux 查看cpu 信息的命令及简单实例
  10. set/multiset容器
  11. html标题代码字号,HTML 标题
  12. C++复习 auto
  13. Tcl Tutorial 笔记7 ·for incr
  14. Atitit attilax涉及到的大数据 数据分析 数据挖掘 ai人工智能的处理技术 目录 1.1. 大数据 机器视觉 图像处理 数据分析 数据挖掘 知识图谱 ai人工智能方面系列项目 1 2.
  15. Eclipse输入或创建txt文件位置
  16. 你的选择,决定了你过怎样的生活
  17. Windows Server - NIC Teaming
  18. Python快速编程入门#学习笔记06# |第6章 :函数(学生管理系统)
  19. win10 怎么由豆沙绿恢复为默认的颜色
  20. 这些实用的手机小技巧分享给你

热门文章

  1. 宏观经济学gdp计算方法_曼昆宏观经济学读书笔记(一):GDP、通胀率、失业率...
  2. AI一键抠像工具,轻松完成视频抠像操作
  3. 不属于c语言程序运算符,下面属于C语言关系运算符的是:( ) (A) (B) (C) =! (D) = - 试题答案网问答...
  4. 找素数(质数):线性筛法和埃氏筛法
  5. 逼近理想解法TOPSIS(python程序)
  6. Thymeleaf (三) ---------Thymeleaf 属性
  7. 【SEMrush教程】SEO关键词魔法工具使用技巧
  8. 两种方式登录QQ空间提取SKEYamp;P_skey源码
  9. selenium报错:find_element() argument after * must be an iterable, not bool
  10. Linux操作系统中man命令的用法,Linux 系统中的MAN命令使用祥解