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 ...
随机推荐
- php.ini xdebug
[XDebug]zend_extension = "C:\xampp\php\ext\php_xdebug.dll"xdebug.profiler_append = 0xdebug ...
- lucene.net helper类 【结合盘古分词进行搜索的小例子(分页功能)】
转自:http://blog.csdn.net/pukuimin1226/article/details/17558247 添加:2013-12-25 更新:2013-12-26 新增分页功能. ...
- android学习笔记31——ADB命令
使用Adb shell command直接送key event給Androidadb shell input keyevent 7 # for key '0'adb shell input keyev ...
- linux网络不同的解决办法
贯标防火墙,iptables 注释掉/etc/hosts的localhost的ipv6地址映射
- Hbase的安装(hadoop-2.6.0,hbase1.0)
Hbase的安装相对很简单啊...只要你装了Hadoop 装Hbase就是分分钟的事 如果要装hadoop集群的话 hadoop分类的集群安装好了,如果已经装好单机版~ 那就再配置如下就好~ 一.vi ...
- 1.运行Android Studio,一直提示:Error running app: Instant Run requires 'Tools | Android | Enable ADB integration' to be enabled.
1.解决问题办法:菜单栏,Tools -> Adnroid -> enable ADB integration勾上 2.暂时性的解决方案:在Android Studio中的:Prefere ...
- python(4) 小程序-异步加载
注:处理异步加载需要模拟浏览器登陆,然后用import json,用loads解析 例如:
- 【java】简单的事件总线EventBus
public class EventBus { private static Map<String, EventListener> eventListeners = new HashMap ...
- JAVA 对象的转型
/* 对象的转型: 1.对象的向上转型 子类转成父类 默认进行 父类引用指向子类对象 2.对象的向下转型 父类转成子类 强制进行 关键字:instanceof 测试左边对象是否是右边类的实例 如果是返 ...
- Tornado
Tornado 是 FriendFeed 使用的可扩展的非阻塞式 web 服务器及其相关工具的开源版本.这个 Web 框架看起来有些像web.py 或者 Google 的 webapp,不过为了能有效 ...