java后台调用http请求
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请求的更多相关文章
- java后台调用HttpURLConnection类模拟浏览器请求(一般用于接口调用)
项目开发中难免遇到外部接口的调用,小生今天初次接触该类,跟着API方法走了一遍,如有不对的地方,还请哆哆指正,拜谢! 1 package com.cplatform.movie.back.test; ...
- Java后台调用gcc编译C语言代码
想做一个能够在线编译代码运行的平台,Java和SQL已经支持了,因为是用Java写的后台,所以Java和SQL挺容易就实现了,做到支持C的时候就卡住了,网上搜了一下这种帖子好像很少. 我采取的办法是就 ...
- java后台调用url无协议
url格式不正确,可能有"www.baidu.com" "这个不能有 // 下载pdf public void downpdf(String URL, String ...
- md5签名加密(用于java 后台调用短信平台接口实现发短信)
MD5Util 方法 package com.funcanteen.business.action.pay.util; import java.security.MessageDigest; publ ...
- java后台调用文件上传接口
借鉴:https://blog.csdn.net/yjclsx/article/details/70675057 /** * 调用流程上传文件接口上传文件 * @param url * @param ...
- java后台调用url
版权声明:本文为博主牟云飞原创文章,未经博主同意不得转载. https://blog.csdn.net/myfmyfmyfmyf/article/details/32690757 QXOutStrea ...
- java调用http请求json
最近遇到的问题,java如何调用http请求json: public class HttpClientUtil { private static final String CONTENT_TYPE_T ...
- Java后台使用httpclient入门HttpPost请求(form表单提交,File文件上传和传输Json数据)
一.HttpClient 简介 HttpClient 是 Apache Jakarta Common 下的子项目,用来提供高效的.最新的.功能丰富的支持 HTTP 协议的客户端编程工具包,并且它支持 ...
- node作为中间层 —> 跨域请求java后台接口(使用http-proxy-middleware中间件)
情景:利用node的express 作为中间层,跨域调取java后台接口,由于java接口对session有判断,因此每次请求都必须在req的headers中需要带上cookie,否则接口报500错误 ...
随机推荐
- Python模块Scrapy导入出错:ImportError: cannot import name xmlrpc_client
Mac(OS version: OS X Yosemite 10.10.5)上安装Scrapy模块,使用时出现: from six.moves import xmlrpc_client as xmlr ...
- Windows下CURL扩展无效之终极解决办法。
本地开发环境使用WAMP快速搭建,在使用PHP的CURL时可能会存在无法载入情况,这里提供终极解决方法. 1.在php.ini配置文件中启用 php_curll.dll 扩展: (环境已经自动附带 l ...
- [cdqzds] Challenge4
描述 给一个长为N的数列,有M次操作,每次操作时以下三种之一: (1)修改数列中的一个数 (2)求数列中某连续一段所有数的两两乘积的和 mod 1000000007 (3)求数列中某连续一段所有相邻两 ...
- springmvc+mybatis 根据数据的id删除数据
1. 数据库表 2. notices.jsp <form action="#" method="post"> <fieldset> &l ...
- D-Separation(D分离)-PRML-8.22-Graphical Model 五 18 by 小军
D-Separation(D分离)-PRML-8.22-Graphical Model 五18by 小军 一.引言 在贝叶斯网络的学习过程中,经常会遇到(D-Separation)D-分离这个概念 ...
- Vector源码解析
概要 学完ArrayList和LinkedList之后,我们接着学习Vector.学习方式还是和之前一样,先对Vector有个整体认识,然后再学习它的源码:最后再通过实例来学会使用它.第1部分 Vec ...
- RocketMQ生产者消息篇
系列文章 RocketMQ入门篇 RocketMQ生产者流程篇 RocketMQ生产者消息篇 前言 上文RocketMQ生产者流程篇中详细介绍了生产者发送消息的流程,本文将重点介绍发送消息的通信模式以 ...
- 点击--》java9 新特性 详解
引言: 点击-->java9 新特性 详解 点击-->java8 新特性 详解 正题: 1.局部变量var 将前端思想var关键字引入java后段,自动检测所属于类型,一种情况除外,不能为 ...
- BZOJ5058 期望逆序对 【矩乘 + 组合数学 + 树状数组】
题目链接 BZOJ5058 题解 可以发现任意两个位置\(A,B\)最终位置关系的概率是相等的 如果数列是这样: CCCCACCCCBCCCC 那么最终有\(7\)种位置关系 \((A,B)\) \( ...
- Paxos Made Simple【翻译】
Paxos一致性算法——分布式系统中的经典算法,论文本身也有一段有趣的故事.一致性问题是分布式系统的根本问题之一,在论文中,作者一步步的加强最初一致性问题(2.1节提出的问题)的约束条件,最终导出了一 ...