接上,这贴一下自定义的发送代理
CMPPProxy.java
public class CMPPProxy extends SMProxy {
//保存下发短信的队列
private static BlockingQueue<CMPPDeliverMessage> deliveMsgs = new LinkedBlockingQueue<CMPPDeliverMessage>(15);
/*
* 返回一个实例
* @return CMPPProx 返回一个实例
*/
public static CMPPProxy getInstance() {
if (instance == null) {
instance = new CMPPProxy();
}
return instance;
}
/*
* 获取保存下发短信的队列
* @return BlockingQueue<CMPPDeliverMessage>
*/
public BlockingQueue<CMPPDeliverMessage> getDeliveMsgs() {
return deliveMsgs;
}
protected CMPPProxy() {
super(arg);
}
public void OnTerminate() {
System.out.println("Connection have been breaked! ");
}
/*
* 收到下发短信触发的事件 如果需要返回回执的话就返回一个 CMPPMessage到网关中
* @return CMPPMessage
*/
@Override
public CMPPMessage onDeliver(CMPPDeliverMessage msg) {
byte msgId[] = msg.getMsgId();
if (msg.getRegisteredDeliver() == 1) { //是否要回执
if (String.valueOf(msg.getStat()).equalsIgnoreCase("DELIVRD")) {
System.out.println(String.valueOf(String.valueOf((new StringBuffer("\t\treceived DELIVRD message msgid=[")).append(msg.getMsgId()).append("]"))));
// long submitMsgId = TypeConvert.byte2long(msg.getStatusMsgId());
try {
CMPPDeliverRepMessage cmppdeliverrepmessage = new CMPPDeliverRepMessage(msgId, 0);
return cmppdeliverrepmessage;
} catch (Exception ex) {
CMPPDeliverRepMessage cmppdeliverrepmessage1 = new CMPPDeliverRepMessage(msgId, 9);
return cmppdeliverrepmessage1;
}
} else {
return new CMPPDeliverRepMessage(msgId, 9);
}
} else {
System.out.println("Get a Deliver..");
try {
deliveMsgs.put(msg); //把收到的非回执短信保存到队列中待处理
} catch (InterruptedException ex) {
Logger.getLogger(CMPPProxy.class.getName()).log(Level.SEVERE, null, ex);
}
System.out.println("Total [" + deliveMsgs.size() + "]DeliverMessages");
System.out.println(String.valueOf(String.valueOf((new StringBuffer("\t\treceived non DELIVRD message msgid=[")).append(msg.getMsgId()).append("]"))));
return new CMPPDeliverRepMessage(msgId, 9);
}
}
/*
* 封装过的发送函数
* @param CMPPSubmitMessage 短信
* @return boolean 是否发送成功
*/
public boolean send(CMPPSubmitMessage msg) {
if (msg == null) {
return false;
}
CMPPSubmitRepMessage reportMsg = null;
try {
reportMsg = (CMPPSubmitRepMessage) super.send(msg);
if (reportMsg == null) {
return false;
}
} catch (IOException ex) {
ex.printStackTrace();
return false;
}
return true;
}
/*
*发送短信,带响应内容
* @param CMPPSubmitMessage
* @return CMPPSubmiReptMessage 响应内容
*/
public CMPPSubmitRepMessage sendWithRep(CMPPSubmitMessage msg) {
CMPPSubmitRepMessage reportMsg = null;
try {
reportMsg = (CMPPSubmitRepMessage) super.send(msg);
} catch (IOException ex) {
ex.printStackTrace();
}
return reportMsg;
}
private static Args arg = Env.getConfig().getArgs("CMPPConnect");
public static final String service_Id = Env.getConfig().get("CMPPSubmitMessage/service_Id", "WebSM");
public static final String msg_Src = Env.getConfig().get("CMPPSubmitMessage/msg_Src", "WebSMS");
public static final String connectCode = Env.getConfig().get("CMPPSubmitMessage/src_Terminal_Id", "");
private static CMPPProxy instance;
}
分享到:
相关推荐
中国电信CMPP2.0原代码+程序
cmpp2.0移动网关+数据库操作。多线程,日志自定义,
基于中国移动短信网关的JAVA代码,可以发送短信,CMPP2.0协议及相关文档
1.遵照CMPP2.0协议实现,模拟了短信网关,支持CONNECT,SUBMIT,DELIVER,QUERY,CANCEL,TERMINATE消息。 2.支持多个客户端登录,支持单连接和双连接类型,支持标准CMPP和亚信API. 3.服务端自动生成Msgid,支持状态报告. ...
本人亲测可用采用华为包开发的JAVA移动短信CMPP2.0/CMPP3.0程序,希望能够帮到你
cmpp2.0开发接口c# 有问题 www.willvc.com.cn 能联系到我
cmpp2.0网关短信发送DEMO(smproxy.jar) 使用华为jar包实现,只吃cmoo2.0 和 3.0。参考 博客 https://blog.csdn.net/leiliz/article/details/73810598
CMPP2.0协议技术。标准文件,接入移动短信中心规范。
中国移动短信网关模拟器支持cmpp2.0
遵照CMPP2.0协议实现,模拟了短信网关,支持多个客户端登录,支持单连接和双连接类型,支持标准CMPP。
由于工作原因,需要用PHP实现cmpp2.0协议。当时在网上找了很久,几乎都是Java版本的。后来,终于找到一个PHP版本的,经过测试缺少一些函数,没法用。并且对于长短信的支持功能有点小bug,经过研究就重写了。把所有...
移动的CMPP2.0和CMPP3.0协议标准 基于CMPP可以开发短信下发直连移动网关
《中国移动通信CMPP2.0短消息网关开发接口库》 本接口是用VC6.0遵循中国移动通信标准CMPP2.0协议开发的短消息网关接口,目的是简化SP接入移动短消息网关的复杂度。 本接口对网络通信和CMPP2.0协议进行了高度封...
CMPP2.0接口的VB程序CMPP2.0接口的VB程序
cmpp2.0 java示例,示例简单明了,除工具一个工具类文件和几个协议类文件,所有报文操作都在一个文件内,由几个方法组成,希望对刚接触cmpp开发的新手,有参考帮助,cmpp目录下 运行方法名testLong.java
CMPP2.0协议文档
CMPP2.0短信网关接口开发文档,介绍了短信网关的开发协议
2)源ISMG对接收到的信息返回响应; 3)源ISMG在本地查询不到要连接的SP,向GNS(汇接网关)发路由请求信息; 4)GNS将路由信息返回; 5)源ISMG根据路由信息将请求前转给目的ISMG; 6)目的ISMG对接收到的信息返回响应; 7...
包含接口API与测试工程: 主目录下是详细使用手册.接口文件放在API文件夹中. Demo Project中包含两个示例工程. 一个是模拟网关的源码--“CMPPGateway” 一个是SP连接网关的示例代码--“SPClient”
移动 短信 cmpp2.0 协议 submit deliver