手机短信开发,首先要选择短信平台服务商,如选择了大汉三通作为短信服务商,选择好后,达成使用或二次开发相关协议后,可以注册一个短信帐号,做二次开发,短信平台服务商会提供一些开发接口源码或程序包,及其相关技术接口文档。下面介绍一下我的一些开发经验和技巧。
我们先来了解一些基本常识,使用短信发送接口发送短信后,短信平台会响应一个序列号,这个序列号表明短信已经发送给短信平台了,但不等于短信已经发送成功,短信平台需要继续转发到目标手机上,最终发送成功与失败保存在短信平台的状态报告记录中,一般保留3天记录就会删除的,短信平台提供查询状态报告的接口,需要请求状态报告接口才能得到状态报告。一般短信收费都是按已发送给短信平台的次数来收费的,有时因访问量过大可能会出现没有发送成功的状况。短信平台还提供查询余额接口。下面给出具体实例
手机短信工具类
此工具类提供了发送短信、查询短信余额的功能。
public class SmsUtils {
private String sms_url = "http://procommsserver.300.cn:9090/ctc-oss/services/SmsOperator";//短信服务商提供url接口
/**
* 发送短信,调用短信提供商短信服务
*@author yandk
*/
public static String senderSms(String account,String password,String phones,String content) throws BizException{
String resultMsg="";
ISmsService4EmaProxy smsService4EmaProxy = new ISmsService4EmaProxy(sms_url);//短信服务商接口代理类
MtResponse[] responses = null;
MtMessage message = new MtMessage();
message.setContent(content);
message.setPhoneNumber(phones);
try {
responses=smsService4EmaProxy.sendSms(account,SmsUtils.MD5Encode(password),message);
} catch (RemoteException e) {
throw new BizException("手机发短信异常:"+e.getMessage());
}
if(responses==null){
throw new BizException("手机发短信错误,响应信息为空");
}
List<SmsResponse> smsResponseList = convertToSmsReport(responses);
resultMsg= smsResponseListToJson(smsResponseList);
return resultMsg;
}
/**
* 取得短信余额(剩余条数)
*/
public static int getSmsBalance(String account,String password) throws BizException{
int smsBalance=0;
ISmsService4EmaProxy smsService4EmaProxy = new ISmsService4EmaProxy(sms_url);//短信服务商短信接口代理类
Balance balance = null;
try {
balance = smsService4EmaProxy.getBalance(account, SmsUtils.MD5Encode(password));
} catch (RemoteException e) {
throw new BizException("取得短信剩余条数异常:"+e.getMessage());
}
smsBalance= balance.getSmsBalance();
return smsBalance;
}
}
手机短信并发的处理
并发情况下发送短信,一般想到用多线程方式发送短信,但是有个问题,我们一般使用一个短信账号(短信服务商提供)来发送短信,比如同时发送短信,或者定时短信在同一时刻触发,因为手机短信在同一时刻只能一次发送一条,这时可能会出问题。这种情况的解决方法,可以使用队列,每次发送短信都从队列中取出发送请求进行发送,即时同一时刻,队列也是有先后次序的,这样就能保证同一时刻发送短信的并发问题。java程序可以使用JMS。下面详细说一下具体作法。
短信选型对比分析
手机彩信接口
国都彩信接口调研
彩信最大支持100k,程序中对彩信分帧最大为20帧,每帧内容最多有3种类型:文本(.txt)、图片(.gif,.jpg)、声音(mid)。但有一点,彩信显示顺序为先显示图片,后显示文本,若改变顺序,必须在程序中分帧(及文本一帧、图片一帧)。目前淘宝、58同城都在使用。
彩信选型对比分析
创世漫道