- 浏览: 334184 次
- 性别:
- 来自: 上海
文章分类
- 全部博客 (59)
- wicket (1)
- java (24)
- js (27)
- xml (3)
- Android (1)
- 服务器 (7)
- 数据库 (7)
- spring (1)
- hibernate (1)
- ssh (6)
- web (25)
- oracle (1)
- 函数 (2)
- mysql (1)
- 手机 (6)
- javascript (21)
- session (3)
- cookie (4)
- struts (1)
- ngnix (1)
- 软件使用 (2)
- linux (1)
- vi (1)
- 前端 (6)
- javascrip (2)
- html (3)
- js css (2)
- 正则 (1)
- ajax (1)
- toast (1)
- 消息提示 (1)
- 确认弹窗 (1)
- springmvc (1)
- 倒计时 (1)
最新评论
-
wenm168:
美观的图片上传前预览效果:http://www.anyrt.c ...
JavaScript 图片的上传前预览(兼容所有浏览器) -
口弦1992:
我的ie9并没有图片预览出来啊。
JavaScript 图片的上传前预览(兼容所有浏览器) -
axie1234567:
分享的东西很有用。
java web中实现同一帐号同一时间只能一个地点登陆(类似QQ登录的功能) -
wyl4728:
32个赞
mysql函数大全 -
yu_long:
seeker.getCountry(ip);
解析出来的 ...
根据IP地址获取所在地
最近自己在弄一个英国的优惠券的网站!需要用到国外的短信发送接口!
搜索和查找发现有几个比较不错的短信发送接口网站!
代码粘出来给大家分享一下!
SMSService 抽象接口类
/** * squarelife * * @author eric * * 2011-11-28 下午08:41:43 */ package com.life.service.sms; /** * @author eric * * 2011-11-28 下午08:41:43 */ public interface SMSService { boolean sendMessage(String msg,String countryCode,String phoneNumber); }
需要配置的短信配置信息! sms.properties #短信接口名称Gateway160SMSServiceImpl,BulksmsSmsServiceImpl #Gateway160SMSServiceImpl,test123456,test123456, 065af763-bdb8-4f27-bc81-d6c14f2f545c #http://www.bulksms.co.uk/ #http://www.gateway160.com/ wy.sms.service.name=Gateway160SMSServiceImpl #短信接口的用户名 wy.sms.service.accountName=**** #短信接口国家代码 #Gateway160SMSServiceImpl 用国家代码如中国:CN 美国:US 英国:GB #BulksmsSmsServiceImpl 用电话代码如中国:86 美国:1 英国:44 wy.sms.service.countryCode=CN #短信接口的密码 wy.sms.service.password=**** #短信接口APIkey 注册时候的APIkey wy.sms.service.apiKey=****
package com.life.service.sms; import java.io.UnsupportedEncodingException; import java.net.URLEncoder; import java.util.HashMap; import java.util.Map; import com.life.util.PropertyUtil; /** * * @author eric * * 2011-11-28 下午09:15:23 */ public class AbstractSMSService { /** * 获取属性值 * 2011-11-28 下午09:15:27 * @param key * @return */ protected String getProperty(String key) { return new PropertyUtil().getProperty(key); } /** * 2011-11-28 下午10:28:57 * @param params * @return * @throws UnsupportedEncodingException */ protected String encode(final HashMap<String,String> params) throws UnsupportedEncodingException { StringBuilder sb = new StringBuilder(); for (Map.Entry<String, String> entry : params.entrySet()) { String key = entry.getKey(); String val = entry.getValue(); sb.append(URLEncoder.encode(key, "UTF-8")); sb.append("="); sb.append(URLEncoder.encode(val, "UTF-8")); sb.append("&"); } return sb.toString(); } }
BulksmsSmsServiceImpl 短信接口实现类 接口相关信息网址 http://www.bulksms.co.uk/
/** * squarelife * * @author eric * * 2011-11-28 下午09:33:18 */ package com.life.service.sms.impl; import java.io.BufferedReader; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.HttpURLConnection; import java.net.URL; import java.util.HashMap; import org.apache.log4j.Logger; import com.life.service.sms.AbstractSMSService; import com.life.service.sms.SMSService; /** * @author eric * * 2011-11-28 下午09:33:18 */ public class BulksmsSmsServiceImpl extends AbstractSMSService implements SMSService { private static final Logger logger = Logger .getLogger(BulksmsSmsServiceImpl.class); /* * (non-Javadoc) * * @see com.life.service.sms.SMSService#sendMessage(java.lang.String, * java.lang.String, java.lang.String) */ @Override public boolean sendMessage(String msg, String countryCode, String phoneNumber) { HashMap<String, String> params = new HashMap<String, String>(); params.put("username", getProperty("wy.sms.service.accountName")); params.put("password", getProperty("wy.sms.service.password")); params.put("phoneNumber", phoneNumber); params.put("message", msg); params.put("want_report", "1"); params.put("msisdn", countryCode + phoneNumber); URL url = null; HttpURLConnection httpCon = null; try { // Construct data // String data = ""; /* * Note the suggested encoding for certain parameters, notably the * username, password and especially the message. ISO-8859-1 is * essentially the character set that we use for message bodies, * with a few exceptions for e.g. Greek characters. For a full list, * see: * http://www.bulksms.co.uk/docs/eapi/submission/character_encoding/ */ // Send data url = new URL( "http://www.bulksms.co.uk:5567/eapi/submission/send_sms/2/2.0"); /* * If your firewall blocks access to port 5567, you can fall back to * port 80: URL url = new * URL("http://www.bulksms.co.uk/eapi/submission/send_sms/2/2.0"); * (See FAQ for more details.) */ httpCon = (HttpURLConnection) url.openConnection(); httpCon.setDoOutput(true); httpCon.setRequestMethod("POST"); httpCon.setRequestProperty("Content-type", "text/html"); httpCon.setRequestProperty("Accept-Charset", "UTF-8"); httpCon.setRequestProperty("contentType", "UTF-8"); // write post body OutputStreamWriter out = new OutputStreamWriter(httpCon .getOutputStream(), "UTF-8"); String postBody = encode(params); out.write(postBody); out.flush(); out.close(); // Get the response StringBuilder sb = new StringBuilder(); BufferedReader rd = new BufferedReader(new InputStreamReader( httpCon.getInputStream())); String line; while ((line = rd.readLine()) != null) { sb.append(line); } rd.close(); logger.info("responseCode=" + httpCon.getResponseCode()); logger.info("responseBody=" + sb.toString()); if (httpCon != null && httpCon.getResponseCode() == HttpURLConnection.HTTP_OK) { return true; } else { return false; } } catch (Exception e) { logger.error("Exception throw!", e); return false; } finally { if (httpCon != null) { httpCon.disconnect(); } } } }
Gateway160SMSServiceImpl 接口相关信息网址 http://www.gateway160.com/
/** * squarelife * * @author eric * * 2011-11-28 下午08:43:23 */ package com.life.service.sms.impl; import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.io.OutputStreamWriter; import java.net.HttpURLConnection; import java.net.URL; import java.util.HashMap; import org.apache.log4j.Logger; import com.life.service.sms.AbstractSMSService; import com.life.service.sms.SMSService; /** * @author eric * * 2011-11-28 下午08:43:23 */ public class Gateway160SMSServiceImpl extends AbstractSMSService implements SMSService { private static final Logger logger = Logger .getLogger(Gateway160SMSServiceImpl.class); @Override public boolean sendMessage(String msgContent, String countryCode, String phoneNumber) { HashMap<String, String> params = new HashMap<String, String>(); params.put("accountName", getProperty("wy.sms.service.accountName")); params.put("key", getProperty("wy.sms.service.apiKey")); params.put("phoneNumber", phoneNumber); params.put("message", msgContent); params.put("countryCode", countryCode); try { URL url = new URL("http://api.gateway160.com/client/sendmessage/"); HttpURLConnection httpCon = (HttpURLConnection) url .openConnection(); httpCon.setDoOutput(true); httpCon.setRequestMethod("POST"); // write post body OutputStreamWriter out = new OutputStreamWriter(httpCon .getOutputStream()); String postBody = encode(params); out.write(postBody); out.flush(); out.close(); // Get the response StringBuilder sb = new StringBuilder(); BufferedReader rd = new BufferedReader(new InputStreamReader( httpCon.getInputStream())); String line; while ((line = rd.readLine()) != null) { sb.append(line); } rd.close(); logger.info("responseCode=" + httpCon.getResponseCode()); logger.info("responseBody=" + sb.toString()); if (httpCon != null && httpCon.getResponseCode() == HttpURLConnection.HTTP_OK) { logger.info("连接成功!"); if (sb != null && sb.equals("1")) { logger.info("短信发送成功!"); return true; } else if (sb != null && sb.equals("0")) { logger.info("invalid account name or key"); return false; } else if (sb != null && sb.equals("-1")) { logger.info("短信发送失败!"); return false; } else { return false; } } else { logger.info("连接失败!"); return false; } } catch (IOException e) { logger.error("IOException thrown! ", e); return false; } } }
给出测试类!相关的PropertiesUtil.java文件就不提供了。一般大家都会写吧!如果有实在有问题的可以联系我!
package com.life.test; import org.junit.Test; import com.life.service.sms.SMSService; import com.life.service.sms.impl.BulksmsSmsServiceImpl; import com.life.service.sms.impl.Gateway160SMSServiceImpl; /** * * @author eric * * 2011-11-28 下午10:01:35 */ public class SMSTest { @Test public void testSendMsg(){ // SMSService smsService=new BulksmsSmsServiceImpl(); // smsService.sendMessage("亲爱的,我爱你!", "86", "**********"); // // SMSService smsService=new Gateway160SMSServiceImpl(); // smsService.sendMessage("亲爱的,我爱你! ", "CN", "**********"); // // SMSService smsService=new Gateway160SMSServiceImpl(); // smsService.sendMessage("哈哈,你这么肯定是我发的呀,你好好上课吧,不打扰你上课了,上课加油!!三明治加油!!", "CN", "*******"); SMSService smsService=new Gateway160SMSServiceImpl(); smsService.sendMessage("你莫冤枉我撒,又冤枉我,老是冤枉我,我承认个啥呀,嘎", "CN", "*********"); } }
大家注意不同的短信接口需要的国家代码格式会有所不同,测试类可以看到。。相关国家代码可以去查看相关网页,百度,谷歌都可以查到。你懂的!另外附上国家代码查看文档!见附件
- 国家代码查看表.zip (21.5 KB)
- 下载次数: 37
评论
4 楼
wangyong31893189
2012-04-09
y_lj2003 写道
非洲那边项目,需要能发送短信,这个接口能用么?还是去找他们那边的
你看下国家代码,里是否有非洲国家的,如果有也是可以用的!前提请注册一个帐号密码
3 楼
y_lj2003
2012-03-14
非洲那边项目,需要能发送短信,这个接口能用么?还是去找他们那边的
2 楼
wangyong31893189
2011-12-16
rensanning 写道
使用Clickatell(API) 不是更简单嘛!
http://www.clickatell.com/
http://www.clickatell.com/
当然我也没有说我的这个接口就写得很简单了,只是供大家一个参考而已,如果有要用到的可以参考一下,有更简单的当然很好了啊!呵呵。。可以交流交流撒!
1 楼
rensanning
2011-12-11
使用Clickatell(API) 不是更简单嘛!
http://www.clickatell.com/
http://www.clickatell.com/
发表评论
-
简单上传文件插件
2017-07-12 11:46 678team777.upload.js js: ; ... -
利用html5进行城市定位!aqi指数的获取
2014-07-08 17:52 21406<html><head> < ... -
seajs打包部署工具spm的使用总结
2014-06-30 14:22 929相信使用seajs的好处大家都是知道的,接触seajs好像 ... -
eclispe 编辑XML时,输入<无法自动提示的修复
2014-02-20 14:40 1009eclispe 当编辑XML时,一 ... -
javaScript的性能优化
2014-01-17 14:05 1276随着网络的发展,网速 ... -
可以用来解析字符串表达式的包
2012-10-16 10:57 2112import com.singularsys.jep.J ... -
实现局部图片的懒加载
2012-08-31 14:52 5506此方式适用和iscroll结合使用,若用于普 ... -
struts1的一些总结
2012-04-16 11:11 1752struts1 7大组件 ActionServlet 控制器 ... -
java web中实现同一帐号同一时间只能一个地点登陆(类似QQ登录的功能)
2012-03-26 13:11 9748在java web中如何实现像QQ登录的功能,同一帐号不 ... -
根据sessionid获取session的被Servlet2.1抛弃getsession方法的解决方案
2012-01-17 23:15 11926最近一个项目中用到了getsession根据ses ... -
触屏中的JavaScript事件
2012-01-06 21:40 27289一、触摸事件ontouchstarto ... -
mysql函数大全
2011-12-16 10:00 10007控制流函数IFNULL(expr1,expr2) 如果expr ... -
【转载】ORACLE函数大全
2011-12-16 09:57 847SQL中的单记录函数1.ASCII返回与指定的字符对 ... -
Mysql数据库的优化三(索引优化)
2011-12-12 09:34 1425在一些情况下,MySQL可以直接使用索引来满足一个 ORD ... -
Mysql数据库的优化二(查询优化)
2011-12-12 09:32 1289糟糕的SQL查询语句可对整个应用程序的运行产生严重的影响, ... -
Mysql数据库的优化(参数优化)
2011-12-12 09:29 1496MySQL运行参数,修改/etc/my.cnf ... -
java路径问题总结
2011-12-09 15:26 904一 相对路径的获得说明:相对路径(即不写明时候到底相对谁) ... -
Spring声明式事务配置管理方法
2011-12-09 13:30 2900事务配置 首先在/WEB-INF/applicatio ... -
jboss-5.1.0.GA 有时出现的启动报错解决方案(java.lang.IllegalArgumentException: Wrong argumen)
2011-12-09 09:39 3140错误代码:(实例化名称为“AttachmentStore”出错 ... -
根据IP地址获取所在地
2011-06-08 16:46 5410主要Test.java public class Test ...
相关推荐
11. **可扩展性**:随着业务的发展,接口可能需要支持更多的功能,如国际短信、语音验证码等,因此设计时需具备良好的可扩展性。 12. **文档齐全**:完善的开发者文档是使用接口的关键,应包含接口说明、示例代码、...
- **功能**:短信平台是集中管理短信发送、接收、计费等功能的服务,通常具有批量发送、定时发送、模板短信、状态报告等功能。 - **选择要点**:考虑平台的稳定性和到达率,是否支持国际短信,价格策略,API的易用...
接口编码方式采用UTF-8,这是一种国际标准的字符编码,能够处理世界上大部分语言,确保短信内容的正确性。 1. **HTTP请求**: 在C#中,可以使用`System.Net.Http.HttpClient`类来发起HTTP请求。例如,使用POST方法...
【国际验证码API接口】是为了解决网络安全中的身份验证问题而设计的一种技术,它通过HTTP接口的方式,使得开发者能够轻松地在自己的应用或网站中集成国际短信验证码功能。这一服务由ihuyi提供,旨在确保用户的安全...
6. **国际短信**:如果业务涉及跨国运营,系统应支持国际短信发送,考虑不同国家的短信编码格式和法律法规。 7. **费用管理**:短信发送通常会产生费用,系统需要记录每个短信的成本,统计短信消费情况,以便财务...
摩杜云短信业务接入,该平台支持国内和国际快速发送验证码、短信通知和推广短信,服务范围覆盖全球200多个国家和地区。国内短信支持三网合一专属通道,与工信部携号转网平台实时互联。...完美支撑8亿短信发送。
5. **回调URL(Callback URL)**:当短信发送成功或失败时,服务器会向此URL发送通知,帮助开发者追踪消息状态。 6. **时间戳(Timestamp)**:为了防止重放攻击,接口调用时需要带上当前时间戳,服务端会验证其...
**中昱维信国际短信接口文档详解** 在数字化时代的今天,国际短信服务是企业与全球客户沟通的重要桥梁。中昱维信提供了一种国际短信接口,使得开发者能够方便地集成到自己的应用程序中,实现跨国短信的发送。然而,...
【短信发送SDK包】是一种专为开发者设计的软件开发工具包,它允许应用程序轻松地集成短信发送功能。SDK(Software Development Kit)通常包含了一系列API(Application Programming Interface)、文档、示例代码、库...
1. **多语言支持**:此接口的核心功能是支持多种语言的短信发送,包括但不限于中文、英文、法语、西班牙语、德语等,覆盖全球大部分国家和地区,满足国际化的应用需求。 2. **API接口**:接口以API的形式提供,通常...
4. 多元化服务:除了基本的短信发送和接收,还支持语音验证码、国际短信等增值服务。 5. 自定义设置:允许企业根据自身需求定制短信内容、发送时间等参数。 6. 实时监控:实时监控接口性能和短信服务质量,提供故障...
亿美短信应用API接口-八项创新 1、全网覆盖:全国全网、电信、联通、移动显示同一号码 2、心跳机制:保证客户端与服务器时时连接 3、异步通讯:支持异步通讯,每个连接峰值可达20条/秒 4、智能化短信...
在短信发送中,可能会用到这些编码功能,例如在URL编码短信参数,或者在处理国际电话号码时进行格式规范化。 为了实现短信发送,我们需要找到一个短信服务提供商,他们通常会提供API接口,允许开发者通过HTTP请求...
- 这些服务通常包括批量发送、模板短信、国际短信等功能,并提供详尽的API文档和SDK。 6. **编程实现**: - 实现这个功能可能需要使用如Python、Java、C#等编程语言,利用HTTP库(如Python的requests库)来发起...
这一版本的短信接口插件支持多种短信通道,包括国内三大运营商以及众多国际短信服务商,适应各种业务场景的需求。 在实际应用中,PHPYUN4.6.1短信接口插件的使用非常简单。开发者只需要通过API调用,就能轻松实现...
1. **范围**:协议的适用范围涵盖了所有需要通过中国移动短信网关进行短信发送和接收的互联网应用和服务提供商。它定义了接口的功能、性能和安全性要求。 2. **引用标准**:在制定该协议时,参考了相关的国际、国家...
2. **选择短信服务**:阿里大鱼提供了多种短信服务,如国内短信、国际/港澳台短信。根据需求选择对应的接口。 3. **设置短信参数**:包括短信签名、模板CODE、目标手机号码等。短信签名需提前在阿里云后台进行备案...
(3) **发送短信验证码**:在用户触发发送验证码的事件时,通过SDK调用MOB的接口,传入用户的手机号码和API Key,请求发送验证码。 (4) **接收与验证**:用户在收到短信后输入验证码,应用将验证码提交到服务器。...
Java短信接口是一种在Java应用程序中实现短信发送功能的技术,它使得开发者可以通过编程方式与短信网关进行通信,进而实现向手机用户发送短信的功能。在现代软件开发中,这种接口广泛应用于验证码发送、通知服务、...