`

国外短信发送接口

    博客分类:
  • java
阅读更多

最近自己在弄一个英国的优惠券的网站!需要用到国外的短信发送接口!

 

搜索和查找发现有几个比较不错的短信发送接口网站!

 

代码粘出来给大家分享一下!

 

 

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", "*********");
	}
}

 

大家注意不同的短信接口需要的国家代码格式会有所不同,测试类可以看到。。相关国家代码可以去查看相关网页,百度,谷歌都可以查到。你懂的!另外附上国家代码查看文档!见附件

 

 

 

0
3
分享到:
评论
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/

当然我也没有说我的这个接口就写得很简单了,只是供大家一个参考而已,如果有要用到的可以参考一下,有更简单的当然很好了啊!呵呵。。可以交流交流撒!
1 楼 rensanning 2011-12-11  
使用Clickatell(API) 不是更简单嘛!
http://www.clickatell.com/

相关推荐

    短信发送接口V4.0

    11. **可扩展性**:随着业务的发展,接口可能需要支持更多的功能,如国际短信、语音验证码等,因此设计时需具备良好的可扩展性。 12. **文档齐全**:完善的开发者文档是使用接口的关键,应包含接口说明、示例代码、...

    短信接口短信网关源代码

    - **功能**:短信平台是集中管理短信发送、接收、计费等功能的服务,通常具有批量发送、定时发送、模板短信、状态报告等功能。 - **选择要点**:考虑平台的稳定性和到达率,是否支持国际短信,价格策略,API的易用...

    短信接口实现

    接口编码方式采用UTF-8,这是一种国际标准的字符编码,能够处理世界上大部分语言,确保短信内容的正确性。 1. **HTTP请求**: 在C#中,可以使用`System.Net.Http.HttpClient`类来发起HTTP请求。例如,使用POST方法...

    国际验证码API接口

    【国际验证码API接口】是为了解决网络安全中的身份验证问题而设计的一种技术,它通过HTTP接口的方式,使得开发者能够轻松地在自己的应用或网站中集成国际短信验证码功能。这一服务由ihuyi提供,旨在确保用户的安全...

    短信发送功能

    6. **国际短信**:如果业务涉及跨国运营,系统应支持国际短信发送,考虑不同国家的短信编码格式和法律法规。 7. **费用管理**:短信发送通常会产生费用,系统需要记录每个短信的成本,统计短信消费情况,以便财务...

    Java 调用短信API接口

    摩杜云短信业务接入,该平台支持国内和国际快速发送验证码、短信通知和推广短信,服务范围覆盖全球200多个国家和地区。国内短信支持三网合一专属通道,与工信部携号转网平台实时互联。...完美支撑8亿短信发送。

    短信URL接口参数说明.rar

    5. **回调URL(Callback URL)**:当短信发送成功或失败时,服务器会向此URL发送通知,帮助开发者追踪消息状态。 6. **时间戳(Timestamp)**:为了防止重放攻击,接口调用时需要带上当前时间戳,服务端会验证其...

    中昱维信国际短信接口文档

    **中昱维信国际短信接口文档详解** 在数字化时代的今天,国际短信服务是企业与全球客户沟通的重要桥梁。中昱维信提供了一种国际短信接口,使得开发者能够方便地集成到自己的应用程序中,实现跨国短信的发送。然而,...

    短信发送sdk包

    【短信发送SDK包】是一种专为开发者设计的软件开发工具包,它允许应用程序轻松地集成短信发送功能。SDK(Software Development Kit)通常包含了一系列API(Application Programming Interface)、文档、示例代码、库...

    多重语言短信服务接口

    1. **多语言支持**:此接口的核心功能是支持多种语言的短信发送,包括但不限于中文、英文、法语、西班牙语、德语等,覆盖全球大部分国家和地区,满足国际化的应用需求。 2. **API接口**:接口以API的形式提供,通常...

    移动代理服务器MAS短信接口开发资料(华为和嘉讯)

    4. 多元化服务:除了基本的短信发送和接收,还支持语音验证码、国际短信等增值服务。 5. 自定义设置:允许企业根据自身需求定制短信内容、发送时间等参数。 6. 实时监控:实时监控接口性能和短信服务质量,提供故障...

    短信平台API接口

    亿美短信应用API接口-八项创新  1、全网覆盖:全国全网、电信、联通、移动显示同一号码  2、心跳机制:保证客户端与服务器时时连接  3、异步通讯:支持异步通讯,每个连接峰值可达20条/秒  4、智能化短信...

    短信发送依赖jar短信发送

    在短信发送中,可能会用到这些编码功能,例如在URL编码短信参数,或者在处理国际电话号码时进行格式规范化。 为了实现短信发送,我们需要找到一个短信服务提供商,他们通常会提供API接口,允许开发者通过HTTP请求...

    局域网内连接短信平台发短信

    - 这些服务通常包括批量发送、模板短信、国际短信等功能,并提供详尽的API文档和SDK。 6. **编程实现**: - 实现这个功能可能需要使用如Python、Java、C#等编程语言,利用HTTP库(如Python的requests库)来发起...

    中国移动互联网短信网关接口协议(V3.0.0).doc

    1. **范围**:协议的适用范围涵盖了所有需要通过中国移动短信网关进行短信发送和接收的互联网应用和服务提供商。它定义了接口的功能、性能和安全性要求。 2. **引用标准**:在制定该协议时,参考了相关的国际、国家...

    PHPYUN4.6.1短信接口插件.rar

    这一版本的短信接口插件支持多种短信通道,包括国内三大运营商以及众多国际短信服务商,适应各种业务场景的需求。 在实际应用中,PHPYUN4.6.1短信接口插件的使用非常简单。开发者只需要通过API调用,就能轻松实现...

    阿里大鱼C#短信接口程序

    2. **选择短信服务**:阿里大鱼提供了多种短信服务,如国内短信、国际/港澳台短信。根据需求选择对应的接口。 3. **设置短信参数**:包括短信签名、模板CODE、目标手机号码等。短信签名需提前在阿里云后台进行备案...

    短信验证demo

    (3) **发送短信验证码**:在用户触发发送验证码的事件时,通过SDK调用MOB的接口,传入用户的手机号码和API Key,请求发送验证码。 (4) **接收与验证**:用户在收到短信后输入验证码,应用将验证码提交到服务器。...

    java短信接口

    Java短信接口是一种在Java应用程序中实现短信发送功能的技术,它使得开发者可以通过编程方式与短信网关进行通信,进而实现向手机用户发送短信的功能。在现代软件开发中,这种接口广泛应用于验证码发送、通知服务、...

Global site tag (gtag.js) - Google Analytics