给安卓端调用的短信发送接口demo
package com.js.ai.modules.pointwall.action; import java.io.IOException;
import java.util.HashMap;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.log4j.Logger;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.ResponseBody;
import com.js.ai.common.utils.CacheUtils;
import com.js.ai.common.utils.StringUtils;
import com.js.ai.common.web.BaseController;
import com.js.ai.modules.pointwall.util.JsonHandle;
import com.js.ai.modules.pointwall.util.SysConfigUtil;
import com.js.ai.smssend.SendValidCode; /**
*
* @ClassName: SendSmsAction
* @Description: 短信验证码 Controller
* @author:
* @date:
*/
@Controller
@RequestMapping(value = "${adminPath}/client")
public class SendSmsAction extends BaseController {
private static Logger logger = Logger.getLogger(SendSmsAction.class); /**
*
* @Title: sendSms
* @Description: 发送短信验证码
* @param request
* @param response
* @throws IOException
*
* @return: void
*/
@RequestMapping(value = "sendSMS")
@ResponseBody
public String sendSms(HttpServletRequest request, HttpServletResponse response) throws IOException {
response.setCharacterEncoding("utf-8");
request.setCharacterEncoding("utf-8");
String uuid = request.getParameter("uuid");// 获取客户端发送的手机唯一标识码
String phone = request.getParameter("phone");// 获取客户端发送手机号码
String phone_map = (String) CacheUtils.get(phone);// 根据手机号这个key取出对应的uuid值,限制同一个手机号五分钟内只能发送一次号码
String uuid_map = (String) CacheUtils.get(uuid);// 取出uuid的值来限制一台手机五分钟内只能发送一条短息。
HashMap<String, String> map = new HashMap<String, String>();
int smsCode = 100000 + (int) (Math.random() * 899999);// 随机验证码
String verificationCode = String.valueOf(smsCode);// 验证码
if (StringUtils.isEmpty(uuid_map)) {// 第一次为空的时候则插入缓存中
CacheUtils.put(uuid, uuid);// 用同一个uuid即作为key 也作为value
if (StringUtils.isNotBlank(phone) && StringUtils.isEmpty(phone_map)) {
CacheUtils.put(phone, phone);
String result = SendValidCode.sendMessage(SysConfigUtil.SMS_ZH, SysConfigUtil.SMS_PW, phone,
SysConfigUtil.SMS_QM, verificationCode, SysConfigUtil.SMS_WAY);
logger.info("客户端第一次发送短信" + phone + ">>>>" + uuid);
} else {// 即使同一个号码 在不同的手机上 也同样限制为在五分钟内只能 发送一次短信获取验证码
map.put("sendSMS", "error");
logger.info("当前在五分钟内不能重复发送短信" + phone + ">>>>" + uuid);
} } else { if (uuid_map.equals(uuid)) {// 第二次之后进来,则判断uuid是否一样,如果是则代表五分钟内不能发送短信
map.put("sendSMS", "error");
logger.info("当前在五分钟内不能重复发送短信" + phone + "=====" + uuid);
} else {
if (StringUtils.isNotBlank(phone)) {// 法则发送信息,并重新赋值 String result = SendValidCode.sendMessage(SysConfigUtil.SMS_ZH, SysConfigUtil.SMS_PW, phone,
SysConfigUtil.SMS_QM, verificationCode, SysConfigUtil.SMS_WAY); CacheUtils.put(phone, phone);
CacheUtils.put(uuid, uuid);// 用同一个uuid即作为key 也作为value
logger.info("当前不在五分钟内允许发送短信");
} }
} map.put("Checkcode", verificationCode);
String Checkcode = JsonHandle.toJson(map);
return Checkcode;
}
}
给安卓端调用的短信发送接口demo的更多相关文章
- 短信发送接口demo
public class SendValidCode { // 短信发送的接口网关 private static String sendUrl = "******************** ...
- 短信发送接口被恶意访问的网络攻击事件(四)完结篇--搭建WAF清理战场
前言 短信发送接口被恶意访问的网络攻击事件(一)紧张的遭遇战险胜 短信发送接口被恶意访问的网络攻击事件(二)肉搏战-阻止恶意请求 短信发送接口被恶意访问的网络攻击事件(三)定位恶意IP的日志分析脚本 ...
- thinkphp 5.0整合阿里大于验证码短信发送接口,含完整模型验证实例DEMO
为大家分享一个阿里大于短信发送接口: 首先创建一个发送模型(Send.php): <?php namespace app\index\model; use think\Validate; cla ...
- 短信发送接口被恶意访问的网络攻击事件(三)定位恶意IP的日志分析脚本
前言 承接前文<短信发送接口被恶意访问的网络攻击事件(二)肉搏战-阻止恶意请求>,文中有讲到一个定位非法IP的shell脚本,现在就来公布一下吧,并没有什么技术难度,只是当时花了些时间去写 ...
- JAVA 调用第三方短信平台接口发送短信
做了几个调用三方短信平台发送短信的例子,大部分需要 携带参数,向指定URL发送请求 回顾对接第一个平台时痛苦的乱码经历,这里放一份代码,算是个模版,再用到的时候过来copy一下就OK. 在进入主题之前 ...
- C# 编写短信发送Window服务
我们做项目过程中,一般都会有发送短信的需求.最常见的就是户注册或者登录时发送短信验证码.不同类型的短信发送,我们都可以放到到一张短信表中,然后通过一个定时的作业去执行短信发送.而定时作业的执行,我们就 ...
- python 简单爬虫获取气象数据发送气象定时报-预报预警信息及时推送及阿里云短信群发接口
!/usr/bin/python #encoding=utf-8 #Author:Ruiy #//////////////////////////////////////////////////// ...
- Abp 添加阿里云短信发送
ABP中有短信发送接口ISmsSender public interface ISmsSender { Task<string> SendAsync(string number, stri ...
- destoon 短信发送函数及短信接口修改
// $DT在common.inc.php中定义, $CACHE = cache_read('module.php'); $DT = $CACHE['dt']; 从缓存里读取网站配置信息. //$d ...
随机推荐
- python+mitmproxy抓包过滤+redis消息订阅+websocket实时消息发送,日志实时输出到web界面
本实例实现需求 在游戏SDK测试中,经常需要测试游戏中SDK的埋点日志是否接入正确.本实例通过抓包(客户端http/https 请求)来判定埋点日志是是否接入正确. 实现细节:使用django项目,后 ...
- Gogs/Gitea 在 docker 中部署
注:Gitea是Gogs的一个分支版本,由多个维护者开发,支持搜索.lfs等,但是BUG较多,稳定性似乎没有Gogs好. #### 安装 ####// Gogs$ docker pull gogs/g ...
- 51nod 1042 数位dp
http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1042 1042 数字0-9的数量 基准时间限制:1 秒 空间限制:131 ...
- TCP/UDP编程步骤和区别
一. 概念解析 套接字:一种特殊的文件描述符.一头指向套接字地址(用户),一头指向套接字结构(内核). 套接字结构:由内核维持的一种数据结构,可通过套接字来操作. 套接字地址:ip和port. 二. ...
- 漂亮的Html5网站
http://www.mrdoob.com/projects/chromeexperiments/ball-pool/
- 浅析C#中抽象类和接口的区别
声明方法的存在而不去实现它的类被叫做抽象类(abstract class),它用于要创建一个体现某些基本行为的类,并为该类声明方法,但不能在该类中实现该类的情况.不能创建abstract 类的实例.然 ...
- 第一次使用stackoverflow的寻求帮助
最近在研究一项资料很少的技术--Drools,遇到一个很棘手的问题,搜遍所有网站,百度.谷歌都找不到解决方案.无奈之下,想起了stackoverflow这个技术问答网站.于是鼓足勇气,用蹩脚的英文在上 ...
- Spring Boot下如何自定义Repository中的DAO方法
环境配置介绍 jdk 1.8, Spring Boot 1.5.3.RELEASE, Mysql, Spring Data, JPA 问题描述 Spring Data提供了一套简单易用的DAO层抽象与 ...
- Freemarker 自定义标签 实现TemplateDirectiveModel
1 自定义标签需要实现TemplateDirectiveModel这个接口中的execute方法 实例代码如下 public class UserListDirective implements Te ...
- ubuntu下访问支付宝官网,安装安全控件
(1)根据支付宝提示下载安装控件的压缩包 aliedit.tar.gz (2)解压安装 (3)重启浏览器就可以了