和几家短信平台接触过,都进行了接入测试。总体来说短信发送又快,覆盖率又全的,价格相对贵些。简易选两家分开使用,短信验证码的用一家贵的快的,普通的推广群发短信就用一个便宜的。

下面显示下测试代码

 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语言实现的短信接入实例,各公司大同小异的更多相关文章

  1. java springboot activemq 邮件短信微服务,解决国际化服务的国内外兼容性问题,含各服务商调研情况

    java springboot activemq 邮件短信微服务,解决国际化服务的国内外兼容性问题,含各服务商调研情况 邮件短信微服务 spring boot 微服务 接收json格式参数 验证参数合 ...

  2. Java 实现手机发送短信验证码

    Java 实现手机发送短信验证码 采用引入第三方工具的方式,网上查了半天,发现简单的实现方式便是注册一个中国网建的账号,新建账号的时候会附带赠几条免费短信,彩信 ,之后想要在使用就得花钱了.简单的操作 ...

  3. java短信接入

    1,注册一个中间公司的短信平台(比如网建) 2,找到密匙  3,找到链接案例 4,复制代码 下载jar包 import java.io.UnsupportedEncodingException;imp ...

  4. java实现注册的短信验证码

    最近在做只能净化器的后台用户管理系统,需要使用手机号进行注册,找了许久才大致了解了手机验证码实现流程,今天在此和大家分享一下. 我们使用的是榛子云短信平台, 官网地址:http://smsow.zhe ...

  5. 第一次发博,发个简单的Java程序发送手机短信验证

    最近在准备一个项目,想的登录时候用手机验证,就通过上网查阅了一下手机验证的实现方法,原来超级简单,下面将一步一步介绍. 1.去中国网建注册一个账号密码,首次注册送五条免费短信和3条免费彩信.具体的网址 ...

  6. wuzhicms短信API 实例调用

    1.接口调用 $sendsms = load_class('sms','sms'); echo $sendsms->send_sms('18911549611', '888888', 1); / ...

  7. java + maven 实现发送短信验证码功能

    如何使用java + maven的项目环境发送短信验证码,本文使用的是榛子云短信 的接口. 1. 安装sdk 下载地址: http://smsow.zhenzikj.com/doc/sdk.html ...

  8. SSH2框架实现注冊发短信验证码实例

    这两天開始写程序了,让用SSH2框架,曾经没有接触过Java项目更没有接触过SSH2框架,所以用注冊開始了我Java之旅.后来发现,后台代码挺easy理解的,跟.net的差点儿相同.就是层与层之间的调 ...

  9. Java演示手机发送短信验证码功能实现

    我们这里采用阿里大于的短信API 第一步:登陆阿里大于,下载阿里大于的SDK a.在阿里大于上创建自己的应用 b.点击配置管理中的验证码,先添加签名,再配置短信模板 第二步:解压相关SDK,第一个为j ...

随机推荐

  1. 04文件与IO

    文件系统调用: open.close.create.read.write open: int open(const char* path, int flags) path:要打开的文件的路径 flag ...

  2. Visual对象之DrawingContext.DrawRectangle在有的状态下似乎并不能提高性能

    很多书上都提到使用Visual对象绘制图形可以提高绘图效率,但是经过本人亲测,结果却发现DrawingContext.DrawRectangle的效率远低于使用UIElement.Children.A ...

  3. bzoj2618: [Cqoi2006]凸多边形

    Description 逆时针给出n个凸多边形的顶点坐标,求它们交的面积.例如n=2时,两个凸多边形如下图: 则相交部分的面积为5.233. Input 第一行有一个整数n,表示凸多边形的个数,以下依 ...

  4. Python Beautiful Soup模块的安装

    以安装Beautifulsoup4为例: 1.到网站上下载:http://www.crummy.com/software/BeautifulSoup/bs4/download/ 2.解压文件到C:\P ...

  5. Java事务处理全解析(二)——失败的案例

    在本系列的上一篇文章中,我们讲到了Java事务处理的基本问题,并且讲到了Service层和DAO层,在本篇文章中,我们将以BankService为例学习一个事务处理失败的案例. BankService ...

  6. Javascript金额转化

    //"123,456.78"----> 123456.78(float格式) function rmoney(s) { return parseFloat(s.replace ...

  7. 把centos 的mysql 重装一下 把原来的lnmp删除,怎么备份还原数据库

    mysqldump --lock-all-tables -u root -p --databases mydb > /opt/database/mydb.sql,或者直接备份mysql的数据存储 ...

  8. Linux删除乱码文件名或者目录名

    有时,rz上传文件失败或者不小心输入命令会产生乱码文件名.因为用rm 删除特殊字符基本无效,故找到了下面两种简单易用的方法: 例子: [langxiaowei@mirror:~]$ ls ??     ...

  9. android的照片浏览器(一)至返回所有图片文件

    今天开始写android的照片浏览器 首先要解决的问题是要得到sdcard下面所有是图片的文件的目录 于是我先写了一个普通的java类 来得到后缀是.jpg,.bmp.png.jpeg的文件 pack ...

  10. Hadoop Bloom filter应用示例

    Hadoop0.20.2 Bloom filter应用示例 2014-06-04 11:55 451人阅读 评论(0) 收藏 举报 1. 简介 参见<Hadoop in Action>P1 ...