1:代码   @Value("${sms.username}")  可以将sms.properties配置文件中的值注入到username

     //这种方式是将sms.properties里的值注入到属性中
@Value("${sms.username}")
private String username; @Value("${sms.password}")
private String password; @Value("${sms.apiKey}")
private String apiKey; @Value("${sms.url}")
private String url; @Override
public void sendVerifyCode(String phoneNumber) { // 首先的到session中VerifyCodeVo
VerifyCodeVO vc = UserContext.getVerifyCode();
if (vc == null // 表示没有发过验证码 如果已经发送了要判断两次发送之间的时间间隔
|| (vc != null && DateUtil.getSecondsBetweenDates(vc.getSendTime(),new Date())
>= BidConst.SEND_VERIFYCODE_INTERVAL)) {
// 生成一个验证码
String code = UUID.randomUUID().toString().substring(0, 4);
try {
// 创建一个URL对象
URL targetUrl = new URL(this.url);
// 从URL对象中获得一个连接对象
HttpURLConnection conn = (HttpURLConnection) targetUrl.openConnection();
// 设置请求方式 注意这里的POST或者GET必须大写
conn.setRequestMethod("POST");
// 设置POST请求是有请求体的
conn.setDoOutput(true);
// 拼接发送的短信内容
StringBuilder params = new StringBuilder(100)
.append("username=").append(username)
.append("&password=").append(password)
.append("&apikey=").append(apiKey).append("&mobile=")
.append(phoneNumber).append("&content=")
.append("您的验证码是:").append(code).append(",有效时间是:")
.append(BidConst.VERIFYCODE_VALID_TIME).append("秒!");
// 写入参数
conn.getOutputStream().write(params.toString().getBytes());
// 读入响应
String response = StreamUtils.copyToString(
conn.getInputStream(), Charset.forName("UTF-8"));
// 发送成功 以success开头
if (response.startsWith("success")) {
// 构建一个vo对象 将vo放入session中
vc = new VerifyCodeVO(phoneNumber, code, new Date());
UserContext.putVerifyCode(vc);
}else{
throw new RuntimeException();
}
// 构建一个vo对象 将vo放入session中
// vc = new VerifyCodeVO(phoneNumber, code, new Date());
// UserContext.putVerifyCode(vc);
System.out.println("手机号" +phoneNumber +"验证码:" + code );
} catch (Exception e) {
e.printStackTrace();
throw new RuntimeException("发送短信失败");
}
} else {
throw new RuntimeException("发送过于频繁");
}
}

2:sms.properties配置文件

 sms.username=admin
sms.password=admin
sms.url=http://172.16.71.27:8082/send.do
sms.apiKey=admin

3:调用的其它项目中Controller层中的 send.do 方法实现

     @RequestMapping("/send")
@ResponseBody
public String send(String username, String password, String apikey, String mobile, String content) {
System.out.println("发送短信给手机:" + mobile + ",发送短信内容为:" + content);
return "success";
}

java后台调用http请求的更多相关文章

  1. java后台调用HttpURLConnection类模拟浏览器请求(一般用于接口调用)

    项目开发中难免遇到外部接口的调用,小生今天初次接触该类,跟着API方法走了一遍,如有不对的地方,还请哆哆指正,拜谢! 1 package com.cplatform.movie.back.test; ...

  2. Java后台调用gcc编译C语言代码

    想做一个能够在线编译代码运行的平台,Java和SQL已经支持了,因为是用Java写的后台,所以Java和SQL挺容易就实现了,做到支持C的时候就卡住了,网上搜了一下这种帖子好像很少. 我采取的办法是就 ...

  3. java后台调用url无协议

    url格式不正确,可能有"www.baidu.com"    "这个不能有 // 下载pdf public void downpdf(String URL, String ...

  4. md5签名加密(用于java 后台调用短信平台接口实现发短信)

    MD5Util 方法 package com.funcanteen.business.action.pay.util; import java.security.MessageDigest; publ ...

  5. java后台调用文件上传接口

    借鉴:https://blog.csdn.net/yjclsx/article/details/70675057 /** * 调用流程上传文件接口上传文件 * @param url * @param ...

  6. java后台调用url

    版权声明:本文为博主牟云飞原创文章,未经博主同意不得转载. https://blog.csdn.net/myfmyfmyfmyf/article/details/32690757 QXOutStrea ...

  7. java调用http请求json

    最近遇到的问题,java如何调用http请求json: public class HttpClientUtil { private static final String CONTENT_TYPE_T ...

  8. Java后台使用httpclient入门HttpPost请求(form表单提交,File文件上传和传输Json数据)

    一.HttpClient 简介 HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 ...

  9. node作为中间层 —> 跨域请求java后台接口(使用http-proxy-middleware中间件)

    情景:利用node的express 作为中间层,跨域调取java后台接口,由于java接口对session有判断,因此每次请求都必须在req的headers中需要带上cookie,否则接口报500错误 ...

随机推荐

  1. 【百度】大型网站的HTTPS实践(三)——HTTPS对性能的影响

    HTTPS在保护用户隐私,防止流量劫持方面发挥着非常关键的作用,但与此同时,HTTPS也会降低用户访问速度,增加网站服务器的计算资源消耗.本文主要介绍HTTPS对性能的影响. HTTPS对访问速度的影 ...

  2. Git Github使用错误汇总

    Git使用常见错误 error:failed to push some refs to 'xxx' 本地仓库没有Readme文件,先PULL下远程仓库 git pull --rebase origin ...

  3. getcontext makecontext setcontext swapcontext介绍

    ucontext簇函数学习 https://github.com/zfengzhen/Blog/blob/master/article/ucontext%E7%B0%87%E5%87%BD%E6%95 ...

  4. python自动化之正则

    import re phoneNumRegex=re.compile(r'\d\d\d-\d\d\d-\d\d\d\d') mo=phoneNumRegex.search('My number is ...

  5. Python之路3【第零篇】目录

    Web应用框架篇 1.Web应用框架前戏

  6. Linux服务器中安装python包管理工具pip

    pip是python的包管理工具,python的强大之处除了在于语法的简练,还有就是对众多的库支持了. 1.下载pip包管理工具 链接地址:https://pypi.python.org/pypi/p ...

  7. Alpha 冲刺 —— 十分之八

    队名 火箭少男100 组长博客 林燊大哥 作业博客 Alpha 冲鸭鸭鸭鸭鸭鸭鸭鸭! 成员冲刺阶段情况 林燊(组长) 过去两天完成了哪些任务 协调各成员之间的工作 多次测试软件运行 学习OPENMP ...

  8. 解题:洛谷4314 CPU监控

    题面 线段树·二重标记(什么鬼 用(a,b)标记表示先执行+a操作,然后对b取max,维护历史/当前最大值和历史/当前标记.然后我们发现区间加$x$就是$(x,-inf)$,区间赋$x$就是$(-in ...

  9. SPSS数据类型:测量字段、角色字段

    一:测量字段 • 默认值.具有未知存储类型和值的数据(例如,由于其尚未被读取)将显示为<默认值>. •  连续.用于描述整数.实数或日期/时间等数字值,如范围 0 - 100 或 0.75 ...

  10. 四、Linux学习之文件处理命令

    1.建立目录:mkdir 格式:mkdir –p [目录名] -p     递归创建目录 注意事项: 如果是创建单个目录直接mkdir [目录名就可以] 如果是创建一个目录下的目录也就是递归创建目录请 ...