中国移动通信互联网短信网关接口协议CMPP2.0(普通文本短信、二进制数据短信)
本文用的是中国移动通信互联网短信网关接口协议CMPP2.0,参考华为smproxy.jar包并进行了一些问题的修复和封装。一、华为smproxy.jar包存在乱码问题:1、提交短信CMPP_Connect_REP----->AuthenticatorISMGCMPP_Submit_REP------->Msg...
本文用的是中国移动通信互联网短信网关接口协议CMPP2.0,参考华为smproxy.jar包并进行了一些问题的修复和封装。
Download:SMS-Gateway
一、华为smproxy.jar包存在乱码问题:
1、提交短信
CMPP_Connect_REP----->AuthenticatorISMG
CMPP_Submit_REP------->MsgId
CMPP_Submit--------------->msg_Content
2、状态报告
CMPP_Deliver--------------->MsgId
3、上行消息
CMPP_Deliver--------------->MsgId
CMPP_Deliver--------------->MsgContent
解决办法通过调整底层源码AuthenticatorISMG、MsgId输出为HexString,MsgContent中文转码
二、通过TypeConvert获取msgId
TypeConvert.bytesToHexString(msgId, msgId.length);
三、中文转码问题
经测试 需要编码为GBk或GB2312
四、配置文件
<?xml version="1.0" encoding="UTF-8"?>
<config>
<!--与InfoX建立连接所需参数-->
<CMPPConnect>
<!-- InfoX主机地址,与移动签合同时移动所提供的地址 需修改 -->
<host>127.0.0.1</host>
<!-- InfoX主机端口号 cmpp2.0默认为7890,cmpp3.0为7891-->
<port>7890</port>
<!--(登录帐号SP…ID)与移动签合同时所提供的企业代码 6位 需修改-->
<source-addr>123456</source-addr>
<!--登录密码 默认为空 如有需修改 -->
<shared-secret>123456</shared-secret>
<!-- 心跳信息发送间隔时间(单位:秒) -->
<heartbeat-interval>30</heartbeat-interval>
<!-- 连接中断时重连间隔时间(单位:秒)-->
<reconnect-interval>30</reconnect-interval>
<!-- 需要重连时,连续发出心跳而没有接收到响应的个数(单位:个)-->
<heartbeat-noresponseout>5</heartbeat-noresponseout>
<!-- 操作超时时间(单位:秒) -->
<transaction-timeout>10</transaction-timeout>
<!--双方协商的版本号(大于0,小于256)-->
<version>33</version>
<!--是否属于调试状态,true表示属于调试状态,所有的消息被打印输出到屏幕,false表示不属于调试状态,所有的消息不被输出-->
<debug>true</debug>
</CMPPConnect>
</config>
五、测试类
package com.sms.gateway.domain;
/**
* @author xxxon 2019/10/25
*/
public class TestSendSms {
public static void main(String[] args) throws InterruptedException {
//若与实际业务不相符可自行封装
WebSMSender.getInstance().CmppSmsSubmitClient(new String[] { "xxxxxxx" }, "消息哈".getBytes());
Thread.sleep(10000000);
}
}
六、
有人问一些配置的问题,需要修改的地方,在此我更新下
private String serviceId = "123456";// 移动提供的业务代码 需修改(移动提供)
private int msgFmt = 15;// 信息格式 246:二进制信息 需修改 15文本短信
private String msgSrc = "123456";// 信息内容来源(source-addr) 需修改(移动提供)
private String srcTerminalId = "123456";// 短信接入号码 需修改(移动提供)
private String feeType = "01";// 资费类别 一般为02:按条计信息费(与移动协商)
private String feeCode = "10";// 资费代码(以分为单位)(与移动协商)
短信接入号码 :srcTerminalId
企业代码 :msgSrc 信息内容来源(source-addr)
业务代码:serviceId
密码:source-addr 与移动签合同时所提供的企业代码

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐
所有评论(0)