使用移动代理服务器发送长短信
(使用软件包jtp.jar
软件的名称:MAS2.0
软件开发者:神州数码思特奇信息技术股份有限公司
)
问题描述:
按照demo写出发短信程序无问题,
短信内容超过70汉字,发送后服务器无发送成功响应。短信接收不到。
解决过程:
查阅资料,网上大多数在讲CMPP协议,加协议头,拆分。=没有效果。
经过对jar源码的反编译,发现此段代码:
public static String sendSMS(SUBMIT mt)
{
SimpleDateFormat df = new SimpleDateFormat("yyyyMMddHHmmss");
int containCount = Integer.parseInt(config.getDefault_poolNum());
if(powerFlag.getConnFlag() == 1)
{
logger.error("connection was not prepared!");
return "2";
}
if(!judgeFluxSms.judge())
{
logger.error("the flux was over stander!");
return "3";
}
if("".equals(mt.getServiceID()) || "0".equals(mt.getServiceID()))
mt.setServiceID(config.getINTERSERVICEID());
String msgContent = mt.getMsgContent();
boolean acsiiFlag = isPureAscii(msgContent);
int msgLength1 = mt.getMsgContent().length();
int msgLength = 0;
try
{
msgLength = mt.getMsgContent().getBytes("gbk").length;
}
catch(UnsupportedEncodingException e1)
{
logger.error(e1);
}
mt.head.setSeqno(getSequence1());
String sendId = (new StringBuilder(String.valueOf(df.format(new Date())))).append((new Integer(mt.head.getSeqno())).toString()).toString();
mt.setSendId(sendId);
int normalSmsLen = Integer.parseInt(config.getNormalSmsLen());
String nullStr = " ";
if(msgLength1 > normalSmsLen && msgLength1 < 67)
{
mt.setMsgContent((new StringBuilder(String.valueOf(mt.getMsgContent()))).append(nullStr.substring(0, (67 - msgLength1) + 1)).toString());
msgContent = (new StringBuilder(String.valueOf(mt.getMsgContent()))).append(nullStr.substring(0, (67 - msgLength1) + 1)).toString();
msgLength1 = mt.getMsgContent().length();
try
{
msgLength = mt.getMsgContent().getBytes("gbk").length;
}
catch(UnsupportedEncodingException e1)
{
logger.error(e1);
}
}
if(msgLength1 <= normalSmsLen)
{
mt.head.commandid = 3;
mt.setMessageType(0);
mt.setMsgLength((byte)msgLength);
mt.setPkTotal((byte)1);
mt.setPkNumber((byte)1);
mt.setDestType((byte)0);
mt.setFeeTerminalType((byte)0);
mt.setFeeUserType((byte)0);
mt.setFeeTerminalID(mt.getDestID());
if(acsiiFlag)
mt.setMsgFmt((byte)0);
else
mt.setMsgFmt((byte)15);
if(smsPool.getSubmitSize() < containCount && smsPool.getSubmitSavePoolSize() < containCount)
{
smsPool.addSUBMIT(mt);
return mt.getSendId();
} else
{
logger.error("the SubmitPool was full.");
return "1";
}
}
int configLen = Integer.parseInt(config.getLongSms_Len());
if(msgLength1 < configLen)
{
int total = msgLength1 / 67;
if(msgLength1 % 67 != 0)
total++;
String msgStr[] = new String[total];
for(int i = 0; i < total; i++)
{
int contentLength = i != total - 1 ? 67 : msgLength1 - i * 67;
msgStr[i] = msgContent.substring(i * 67, i * 67 + contentLength);
}
lSmsFlag++;
if(lSmsFlag == 99)
lSmsFlag = 0;
for(int i = 0; i < total; i++)
{
SUBMIT smt = new SUBMIT();
smt.setFlag("1");
smt.setSrcID(mt.getSrcID());
smt.setDestID(mt.getDestID());
smt.setFeeType(mt.getFeeType());
smt.setFeeCode(mt.getFeeCode());
smt.setLinkID(mt.getLinkID());
if(acsiiFlag)
mt.setMsgFmt((byte)0);
else
smt.setMsgFmt((byte)8);
smt.setServiceID(mt.getServiceID());
smt.head.commandid = 3;
smt.setMessageType(0);
smt.setPkTotal((byte)total);
smt.setPkNumber((byte)(i + 1));
byte msgHead[] = new byte[6];
msgHead[0] = 5;
msgHead[1] = 0;
msgHead[2] = 3;
msgHead[3] = (byte)lSmsFlag;
msgHead[4] = (byte)total;
msgHead[5] = (byte)(i + 1);
smt.setLongmsgHead(msgHead);
smt.setMsgContent(msgStr[i]);
smt.setMsgLength((byte)(msgStr[i].length() * 2 + 6));
smt.setDestType((byte)0);
smt.setFeeTerminalType((byte)0);
smt.setFeeUserType((byte)0);
smt.setFeeTerminalID(mt.getDestID());
if(smsPool.getSubmitSize() > containCount || smsPool.getSubmitSavePoolSize() > containCount)
return "1";
smt.head.setSeqno(getSequence1());
smt.setSendId(mt.getSendId());
smsPool.addSUBMIT(smt);
}
} else
{
return "4";
}
return mt.getSendId();
}
说明在提供的封装程序中已经包含对是否是长短信的支持,只要在对应配置文件中加上或者更改
normalSmsLen的值即可
我参考源码给的值是70,
经过测试可以正常发送长短信。
分享到:
相关推荐
* templateId:模板ID,在云MAS平台创建模板,路径:『短信』→『模板短信』→『模板管理』,创建后提交审核,审核通过将获得模板ID * mobiles:收信手机号码,英文逗号分隔,每批次限5000个号码 * params:模板变量...
mas短信的优势在于其高效、可靠和可扩展性,能适应大规模的企业级应用需求。 “云mas平台接口”是指云MAS平台提供的所有用于与平台进行交互的接口,除了webservice接口外,可能还包括API Gateway、SDK等不同形式的...
4. **开发手册**:提供的“移动MAS短信开发手册”应该是为开发者准备的详细指南,涵盖了MAS平台的搭建、配置、API接口设计、数据库集成、安全策略等方面的内容。手册可能还包括示例代码、故障排查步骤和最佳实践。 ...
* 数据库表结构定义:MAS服务器数据库方式通信适配插件支持以下通信能力的数据交互:短信、彩信、定位、WAP PUSH等。 知识点总结 1. infoX-MAS_API接口说明(DB)是用于实现MAS服务器内部各模块和插件以及集团客户...
首先,`SMAPIConfig.jar`是这个API的重要组成部分,它包含了配置文件和必要的类,用于管理和配置MAS短信服务。开发者需要理解和配置这些参数以正确地连接到MAS服务器并发送或接收短信。配置可能包括服务器地址、端口...
移动云MAS(Mobile Application Service)是中国移动推出的企业级通信服务,它为企业提供了丰富的短信功能,包括普通短信和模板短信。这两种短信类型在企业与客户之间的沟通中扮演着重要角色。 普通短信是传统的...
Java MAS(Machine Access Subsystem)机发短信是一种通过Java编程语言与短信猫设备进行交互,实现短信发送的技术。MAS机通常是指支持短信收发功能的硬件设备,它连接到计算机或服务器,允许程序通过特定的API接口...
MAS短信接口是该平台的核心组成部分,允许开发者通过编程方式灵活调用,以满足企业的各种短信需求。 1. **MAS短信接口基础概念** - **SDK**:SDK是一组工具、库和文档,用于帮助开发者快速开发应用并与特定平台或...
【mas短信webservice接口】是一种基于Web服务技术的通信方式,用于实现系统间发送和接收短信的功能。在IT行业中,这种接口通常由专业服务提供商提供,以便其他应用程序或系统能够集成短信服务。在这个场景中,"mas...
**MAS短信服务接口详解** MAS(Mobile Application Server)短信服务接口是一种用于企业与移动设备间通信的技术,尤其在发送验证码、通知消息等方面有着广泛应用。在本项目中,我们使用Winform作为开发平台,构建了...
移动MAS短信接口文档是针对企业级应用中集成短信发送功能的重要参考资料,主要目的是为了帮助开发者理解和使用移动MAS平台提供的短信服务。文档分为四个压缩包,确保了内容的完整性和分类清晰,便于不同需求的开发者...
中国移动集团政企云MAS(Mobile Application Server)平台是一款专为政府和企业提供的高效、安全的短信服务解决方案。MAS平台提供了一套完整的SDK(Software Development Kit)接口,使得开发者能够轻松集成短信发送...
移动MAS短信接口文档是针对企业或开发者用于集成短信发送功能的重要参考资料,主要目的是为了帮助开发者理解和使用移动MAS(Managed Application Services)平台上的短信服务。这个文档通常包括一系列的技术指南、...
**MAS短信发送技术详解** MAS(Mobile Application Server)短信发送技术是一种通过移动应用服务器实现的短信通讯功能。在IT行业中,MAS通常被用作企业级解决方案,用来集成短信服务到各种业务系统中,如客户服务、...
目标阅读对象主要是需要采用MAS短信接口完成开发的编码人员,包括但不限于软件开发者、系统集成商和第三方开发商。 #### 3. 术语定义 - **MT短信**:即Mobile Terminated短信,是指从MAS平台发往手机终端的短信,...
中国移动集团政企云MAS(Mobile Application Server)平台是一款为企业级客户提供短信服务的云平台,它为企业内部通信、客户服务以及营销活动提供了便捷、高效且安全的解决方案。MAS平台的短信SDK(Software ...
【移动MAS短信开发Demo(ASP)】是一种基于ASP(Active Server Pages)技术构建的应用程序,主要用于实现企业级的短信发送功能。在IT行业中,移动MAS(Mobile Application Server)通常指的是中国移动为企业提供的移动...
【移动云MAS】HTTP连接(普通短信+模版短信)接口实例+全部API及文档下载.zip这个压缩包文件包含了中国移动云MAS服务的多种资源,主要针对短信接口开发,特别是HTTP方式的实现。以下是对这些资源的详细解读: 1. **...
移动代理服务器MAS短信API2.2是用于集成短信发送功能到各类应用程序中的一个重要工具,它提供了多种编程语言的接口,包括ASP、VB、JAVA、C/C++、PB(PowerBuilder)、DELPHI以及.NET。本开发手册和DEMO旨在帮助...