java语言实现的短信接入实例,各公司大同小异
和几家短信平台接触过,都进行了接入测试。总体来说短信发送又快,覆盖率又全的,价格相对贵些。简易选两家分开使用,短信验证码的用一家贵的快的,普通的推广群发短信就用一个便宜的。
下面显示下测试代码
public class HttpSMSSender {
protected final Logger logger = LoggerFactory.getLogger(getClass());
// 短信接口地址
private String postUrl = "http://ip:port/webservice.asmx";
@Autowired
private AppVars vars;
private String sname = "username"; // 提交账户
private String spwd = "password"; // 提交账户的密码
private String spnumber = ""; // 企业代码(扩展号,可空着)
private String key = "【某某公司】";
@Deprecated
String sdst; // 接收号码,每次只能提交1个号码
@Deprecated
String smsg; // 信息内容,通常为70汉字以内,具体由平台内部决定
/**
* @param phoneNum
* 手机号码
* @param msg
* 短信内容
* @return 成功返回0
*/
public static void main(String[] args) {
HttpSMSSender sms = new HttpSMSSender();
// String msg = "您正通过" + vars2.websiteNameCn
// + "提现至银行卡(尾号0908),金额90元,请确认无误后方可输入短信验证码:289002。如非本人操作,请拨打客服电话"
// + vars2.servicePhone;
String msg = "您好!用户哈哈,您好!您" + "平台的手机绑定验证码为:989887,请确认。";
sms.send("186****5286", msg);
}
public int send(String phoneNum, String msg) {
StringBuilder postData = new StringBuilder();
try {
// sb
String pwdd = MD5.EncoderByMd5(sname + spwd);
postData.append("sn").append("=").append(sname).append("&");
postData.append("pwd").append("=").append(pwdd).append("&");
postData.append("Ext").append("=").append("").append("&");
postData.append("stime").append("=").append("").append("&");
postData.append("mobile").append("=").append(phoneNum).append("&");
postData.append("Rrid").append("=").append("").append("&");
postData.append("Content").append("=")
.append(java.net.URLEncoder.encode(msg + key, "GBK"));
return send(postData.toString());
} catch (Exception x) {
logger.error("发送短信时发生异常", x);
return -1;
}
}
private int send(String postData) throws UnsupportedEncodingException,
IOException, ParserConfigurationException, SAXException {
logger.info("请求短信接口内容[{}]", postData);
HttpURLConnection conn = null;
try {
final URL url = new URL(postUrl + "?" + postData);
conn = (HttpURLConnection) url.openConnection();
conn.setRequestMethod("GET");
conn.connect();
// 获取响应状态
if (conn.getResponseCode() != HttpURLConnection.HTTP_OK) {
logger.error("连接短信服务器失败");
return -1;
}
InputStream is = conn.getInputStream();
ByteArrayOutputStream baos = new ByteArrayOutputStream();
int i = -1;
while ((i = is.read()) != -1) {
baos.write(i);
}
logger.info("请求短信接口返回内容[{}]", baos.toString());
int resultCode = -1;
try {
resultCode = 0;
} catch (Exception e) {
resultCode = -1;
// TODO: handle exception
}
return resultCode;
} finally {
if (conn != null) {
conn.disconnect();
}
}
}
private int parseResultCode(InputStream is)
throws ParserConfigurationException, SAXException, IOException {
final Map<String, String> map = new HashMap<String, String>();
SAXParser saxParser = SAXParserFactory.newInstance().newSAXParser();
saxParser.parse(is, new DefaultHandler() {
private String tag = "";
public void endElement(String uri, String localName, String qName)
throws SAXException {
tag = "";
}
public void startElement(String uri, String localName,
String qName, Attributes attributes) throws SAXException {
tag = qName;
}
public void characters(char[] ch, int start, int length)
throws SAXException {
if (!tag.isEmpty()) {
map.put(tag, new String(ch, start, length));
}
}
});
logger.info("短信接口返回码[{}]描述[{}]", map.get("State"), map.get("MsgState"));
return Integer.valueOf(map.get("State"));
}
public String getPostUrl() {
return postUrl;
}
public String getSname() {
return sname;
}
public String getSpwd() {
return spwd;
}
public void setPostUrl(String postUrl) {
this.postUrl = postUrl;
}
public void setSname(String sname) {
this.sname = sname;
}
public void setSpwd(String spwd) {
this.spwd = spwd;
}
}
java语言实现的短信接入实例,各公司大同小异的更多相关文章
- java springboot activemq 邮件短信微服务,解决国际化服务的国内外兼容性问题,含各服务商调研情况
java springboot activemq 邮件短信微服务,解决国际化服务的国内外兼容性问题,含各服务商调研情况 邮件短信微服务 spring boot 微服务 接收json格式参数 验证参数合 ...
- Java 实现手机发送短信验证码
Java 实现手机发送短信验证码 采用引入第三方工具的方式,网上查了半天,发现简单的实现方式便是注册一个中国网建的账号,新建账号的时候会附带赠几条免费短信,彩信 ,之后想要在使用就得花钱了.简单的操作 ...
- java短信接入
1,注册一个中间公司的短信平台(比如网建) 2,找到密匙 3,找到链接案例 4,复制代码 下载jar包 import java.io.UnsupportedEncodingException;imp ...
- java实现注册的短信验证码
最近在做只能净化器的后台用户管理系统,需要使用手机号进行注册,找了许久才大致了解了手机验证码实现流程,今天在此和大家分享一下. 我们使用的是榛子云短信平台, 官网地址:http://smsow.zhe ...
- 第一次发博,发个简单的Java程序发送手机短信验证
最近在准备一个项目,想的登录时候用手机验证,就通过上网查阅了一下手机验证的实现方法,原来超级简单,下面将一步一步介绍. 1.去中国网建注册一个账号密码,首次注册送五条免费短信和3条免费彩信.具体的网址 ...
- wuzhicms短信API 实例调用
1.接口调用 $sendsms = load_class('sms','sms'); echo $sendsms->send_sms('18911549611', '888888', 1); / ...
- java + maven 实现发送短信验证码功能
如何使用java + maven的项目环境发送短信验证码,本文使用的是榛子云短信 的接口. 1. 安装sdk 下载地址: http://smsow.zhenzikj.com/doc/sdk.html ...
- SSH2框架实现注冊发短信验证码实例
这两天開始写程序了,让用SSH2框架,曾经没有接触过Java项目更没有接触过SSH2框架,所以用注冊開始了我Java之旅.后来发现,后台代码挺easy理解的,跟.net的差点儿相同.就是层与层之间的调 ...
- Java演示手机发送短信验证码功能实现
我们这里采用阿里大于的短信API 第一步:登陆阿里大于,下载阿里大于的SDK a.在阿里大于上创建自己的应用 b.点击配置管理中的验证码,先添加签名,再配置短信模板 第二步:解压相关SDK,第一个为j ...
随机推荐
- 程序员书单_sshi框架篇
Struts2权威指南完整版 http://download.csdn.net/detail/shenzhq1980/9103955 精通struts.基于MVC的.java.web设计与开发http ...
- rsync 同步文件
rsync 同步文件 rsync -avz roo@192.168.4.12::/home/a ./a --exclude "data" exclude 去掉/a/data 文件 ...
- MappedByteBuffer读写文件
一. MappedByteBuffer java把文件映射到内存中,避免堆内存产生大对象引起full gc.mappedByteBuffer的读写速度都要超过堆内读写文件的速度 public clas ...
- Oracle远程数据库一直连接不上的原因:多了个空格
- 键盘--android 隐藏系统键盘
. -----------------------------------------已验证----------------------------------- public static void ...
- 转_IOS开源
http://www.csdn.net/article/2013-06-05/2815530-GitHub-iOS-open-source-projects-one 苹果App Store本身所具有的 ...
- 关于 MySQL 的 boolean 和 tinyint(1) (转)
boolean类型MYSQL保存BOOLEAN值时用1代表TRUE,0代表FALSE,boolean在MySQL里的类型为tinyint(1),MySQL里有四个常量:true,false,TRUE, ...
- 测试相关、sdk卡读取
测试: monkey 猴子 测试整个系统 adb shell monkey -v 1000 (-v 指定模拟测试的事件数量) 测试某个程序 adb shell monkey -p <程序的包名& ...
- 树莓派,使用opencv调用自带的摄像头
OpenCV&Pi Cam – Step 1 : Install It’s quite easy to install your new Pi Camera. Installation pro ...
- ssh-keygen+ssh-copy-id无密码登录远程LINUX主机(转载)
From:http://blog.163.com/lgh_2002/blog/static/44017526201011333227161/ 1.创建公钥和私钥 ligh@local-host$ ss ...