📄 cmppapis.java
字号:
return -2;
}
CmppActiveTestRep activeTestRep = new CmppActiveTestRep(sock);
activeTestRep.setSequenceId(precActiveRep.nSeqId);
activeTestRep.setSuccessId(precActiveRep.ucSuccId);
int rescode = activeTestRep.sendcmppActivetestRep();
return rescode;
}
public int nCMPP_getPacket(CmppPacket $usPacket)
{
int i = -1;
if ($usPacket == null)
{
return -1;
}
int rescode = $usPacket.readPacket();
if (rescode < 0)
{
return rescode;
}
i = $usPacket.getCommandID();
return i;
}
public int nCMPP_ParseDeliver(CmppPacket usPkgRecv, RecCDeliver precDeliver,
RecCDeliverRcpt precReceipt)
{
int i = -1;
if ( (usPkgRecv == null) || (precDeliver == null) || (precReceipt == null))
{
return i;
}
CmppDeliver deliver = new CmppDeliver(usPkgRecv.getPacketBody(),
usPkgRecv.getPacketBody().length);
int isReceipt = deliver.getRegisteredDelivery();
if (isReceipt == 0)
{
precDeliver.nSeqId = usPkgRecv.getSequenceId();
precDeliver.usMsgId = deliver.getMsgId();
precDeliver.sDstAddr = deliver.getDestnationId();
precDeliver.sServiceId = deliver.getServiceId();
precDeliver.ucTpPid = deliver.getTPpid();
precDeliver.ucTpUdhi = deliver.getTPudhi();
precDeliver.ucMsgFmt = deliver.getMsgFmt();
precDeliver.sSrcAddr = BuffMemoUtil.removeMobilePrefix86(deliver.getSrcTerminalId());
precDeliver.ucRegister = isReceipt;
precDeliver.ucMsgLen = deliver.getMsgLength();
precDeliver.usMsgContent = deliver.getMsgContent();
//处理长短信
StringBuffer sbLongSMSPrefix = new StringBuffer(10);
int nOffset = 0;
if (precDeliver.ucTpUdhi == 1)
{
nOffset = precDeliver.usMsgContent[0] + 1;
try
{
sbLongSMSPrefix.append("(").append(precDeliver.usMsgContent[nOffset - 2])
.append("/").append(precDeliver.usMsgContent[nOffset -1]).append(")");
}
catch (Exception ex)
{
ex.printStackTrace();
}
}
//处理编码问题!
if (precDeliver.ucMsgFmt == 8)
{
try
{
precDeliver.sMsgContent = new String(precDeliver.usMsgContent,
nOffset, precDeliver.ucMsgLen- nOffset,
"UnicodeBigUnmarked");
}
catch (Exception e)
{
e.printStackTrace();
}
}
else
{
precDeliver.sMsgContent = new String(precDeliver.usMsgContent, nOffset,
precDeliver.ucMsgLen- nOffset);
}
precDeliver.sMsgContent = precDeliver.sMsgContent + sbLongSMSPrefix.toString();
precDeliver.usReserve = deliver.getReverse();
}
if (isReceipt == 1)
{
//System.out.println("&&&&&&&&&&usPkgRecv.getSequenceId():"+usPkgRecv.getSequenceId());
precReceipt.nSeqId = usPkgRecv.getSequenceId();
//System.out.println("&&&&&&&&&&deliver.getReceiptMsgId():"+deliver.getReceiptMsgId());
precReceipt.usMsgId = deliver.getReceiptMsgId();
//System.out.println("&&&&&&&&&&deliver.getReceiptStat():"+deliver.getReceiptStat());
precReceipt.sStat = deliver.getReceiptStat();
//System.out.println("&&&&&&&&&&deliver.getReceiptSubmitTime():"+deliver.getReceiptSubmitTime());
precReceipt.sSubmitTime = deliver.getReceiptSubmitTime();
//System.out.println("&&&&&&&&&&deliver.getReceiptDoneTime():"+deliver.getReceiptDoneTime());
precReceipt.sDoneTime = deliver.getReceiptDoneTime();
//System.out.println("&&&&&&&&&&deliver.getReceiptDestTerminalId():"+deliver.getReceiptDestTerminalId());
precReceipt.sDstAddr = deliver.getReceiptDestTerminalId();
//System.out.println("&&&&&&&&&&deliver.getReceiptSMSCSequence():"+deliver.getReceiptSMSCSequence());
precReceipt.nSmscSeqId = deliver.getReceiptSMSCSequence();
}
return isReceipt;
}
public int nCMPP_ParseSubmitRep(CmppPacket usPkgRecv,
RecCSubmitRep precSubmitRep)
{
int i = -1;
if ( (usPkgRecv == null) || (precSubmitRep == null))
{
return i;
}
i = usPkgRecv.getSequenceId();
CmppSubmitRep subRep = new CmppSubmitRep(usPkgRecv.getPacketBody(),
usPkgRecv.getPacketBody().length);
precSubmitRep.nSeqId = i;
precSubmitRep.usMsgId = subRep.getMsgId();
precSubmitRep.ucResult = subRep.getResult();
return i;
}
public int nCMPP_ParseActiveRep(CmppPacket usPkgRecv,
RecCActiveTestRep precActiveRep)
{
int i = -1;
if ( (usPkgRecv == null) || (precActiveRep == null))
{
return i;
}
i = usPkgRecv.getSequenceId();
CmppActiveTestRep atestRep = new CmppActiveTestRep(usPkgRecv.getPacketBody(),
usPkgRecv.getPacketBody().length);
precActiveRep.nSeqId = i;
precActiveRep.ucSuccId = atestRep.getSuccessId();
return i;
}
public int nCMPP_ParseActive(CmppPacket usPkgRecv, RecCActiveTest precActive)
{
int i = -1;
if ( (usPkgRecv == null) || (precActive == null))
{
return i;
}
i = usPkgRecv.getSequenceId();
precActive.nSeqId = i;
return i;
}
public int nCMPP_ParseTerminate(CmppPacket usPkgRecv)
{
int i = -1;
if (usPkgRecv == null)
{
return i;
}
i = usPkgRecv.getSequenceId();
return i;
}
public int nCMPP_ReplyTerminate(RecCTerminateRep precPkg)
{
int i = -1;
if (precPkg == null)
{
return i;
}
CmppTerminateRep termRep = new CmppTerminateRep(sock);
termRep.setSequenceId(precPkg.nSeqId);
int code = termRep.sendTerminateRep();
if (code < 0)
{
return code;
}
return i;
}
/*名称:nCMPP_GetApiVersion
* 功能:查询当前CMPP API执行的CMPP协议版本
* 输入参数:
*
* 输出参数:
*
* 返回值:当前CMPP API执行的CMPP协议版本
*/
public int nCMPP_GetApiVersion(RecCVerInfo $versInfo)
{
if ($versInfo == null)
{
return -1;
}
$versInfo.sVerDesc = "Program cmppapi.jar( Java ) for CMPP20";
$versInfo.ApiVerInfo = 18;
return 0;
}
/*名称:nCMPP_GetApiCmppVersion
* 功能:查询当前CMPP API执行的CMPP协议版本
* 输入参数:
*
* 输出参数:
*
* 返回值:当前CMPP API执行的CMPP协议版本
*/
public int nCMPP_GetHostVersion()
{
return sversion;
}
/*名称:nCMPP_SendQuery
* 功能:向ISMG发送的CMPP_Query包
* 输入参数:
* precQuery:查询条件,参照recCQuery的定义
*
* 输出参数:
*
* 返回值:-1:参数为空 -5:发送包失败 >0 包序列号
*/
public int nCMPP_SendQuery(RecCQuery precQuery)
{
int i = -1;
if (precQuery == null)
{
return i;
}
CmppQuery query = new CmppQuery(sock);
synchronized (sock)
{
i = sock.seq;
query.setSequenceId(sock.seq);
sock.seq++;
if (sock.seq == 2147483647)
{
sock.seq = 2;
}
}
query.setcmppQuerys(precQuery.sTime, precQuery.ucQueryType,
precQuery.sQueryCode, precQuery.usReserve);
int code = query.sendcmppQuery();
if (code < 0)
{
return code;
}
return i;
}
/*名称:nCMPP_ParseQueryRep
* 功能:解析从ISMG返回的CMPP_Query_Rep包
* 输入参数:
* usPkgRecv:通过调用 nCMPP_RecvPacket 读取的CMPP_Query_Rep包
*
* 输出参数:
* $precQueryRep: 参照recCQueryRep的定义
*
* 返回值:-1:参数为空 >0:包序列号
*/
public int nCMPP_ParseQueryRep(CmppPacket usPkgRecv,
RecCQueryRep $precQueryRep)
{
int i = -1;
if ( (usPkgRecv == null) || ($precQueryRep == null))
{
return i;
}
i = usPkgRecv.getSequenceId();
CmppQueryRep queryRep = new CmppQueryRep(usPkgRecv.getPacketBody(),
usPkgRecv.getPacketBody().length);
System.out.println("Body Length:" + usPkgRecv.getPacketBody().length);
$precQueryRep.nSeqId = i;
$precQueryRep.sTime = queryRep.getTime();
$precQueryRep.ucQueryType = queryRep.getQueryType();
$precQueryRep.sQueryCode = queryRep.getQueryCode();
$precQueryRep.nMtTlMsg = queryRep.getMTTLMsg();
$precQueryRep.nMtTlUsr = queryRep.getMTTlusr();
$precQueryRep.nMtScs = queryRep.getMTScs();
$precQueryRep.nMtWt = queryRep.getMTWT();
$precQueryRep.nMtFl = queryRep.getMTFL();
$precQueryRep.nMoScs = queryRep.getMOScs();
$precQueryRep.nMoWt = queryRep.getMOWT();
$precQueryRep.nMoFl = queryRep.getMOFL();
return i;
}
/*名称:nCMPP_SendCancel
* 功能:向ISMG发送的CMPP_Cance包
* 输入参数:
* msgId:短消息标识码
*
* 输出参数:
*
* 返回值:-1:参数为空 -5:发送包失败 >0 包序列号
*/
public int nCMPP_SendCancel(RecCCancel $preCancel)
{
int i = -1;
if ($preCancel == null)
{
return i;
}
CmppCancel cancel = new CmppCancel(sock);
synchronized (sock)
{
i = sock.seq;
$preCancel.nSeqId = i;
cancel.setSequenceId(sock.seq);
sock.seq++;
if (sock.seq == 2147483647)
{
sock.seq = 2;
}
}
cancel.setMsgId($preCancel.usMsgId);
int code = cancel.sendcmppCancel();
if (code < 0)
{
return code;
}
return i;
}
/*名称:nCMPP_ParseCancelRep
* 功能:解析从ISMG返回的CMPP_Cance_Rep包
* 输入参数:
* usPkgRecv:通过调用 nCMPP_RecvPacket 读取的CMPP_Cancel_Rep包
*
* 输出参数:
* $precCancelRep:
* $precCancelRep.SequenceId:包序列号
* $precCancelRep.SuccessId:取消结果,按CMPP1.2协议 0:成功 1:失败
* 返回值:-1:参数为空 1: 取消失败 0:取消成功
*/
public int nCMPP_ParseCancelRep(CmppPacket usPkgRecv,
RecCCancelRep precCancelRep)
{
int i = -1;
if ( (usPkgRecv == null) || (precCancelRep == null))
{
return i;
}
i = usPkgRecv.getSequenceId();
precCancelRep.nSeqId = i;
CmppCancelRep cancelRep = new CmppCancelRep(usPkgRecv.getPacketBody(),
usPkgRecv.getPacketBody().
length);
precCancelRep.ucSuccId = cancelRep.getSuccessId();
return i;
}
public int nCMPP_SendPacket(RecCCmppPacket precPkg)
{
if (null == precPkg)
{
return -1;
}
int code = -1;
switch (precPkg.nCmdId)
{
case 0x00000001:
code = nCMPP_Connect();
break;
case 0x00000002:
code = nCMPP_Terminate();
break;
case 0x00000004:
code = nCMPP_SendSubmit(precPkg.recSubmit, precPkg.recSubmit.sValidTime,
precPkg.recSubmit.sDstTermId,
precPkg.recSubmit.ucMsgLen,
precPkg.recSubmit.usMsgContent);
break;
case 0x80000005:
code = nCMPP_SendDeliverRep(precPkg.recDeliverRep);
break;
case 0x00000006:
if (precPkg == null)
{
System.out.println("precPkg is null");
}
code = nCMPP_SendQuery(precPkg.recQuery);
break;
case 0x00000007:
code = nCMPP_SendCancel(precPkg.recCancel);
break;
case 0x00000008:
code = nCMPP_SendActive();
break;
case 0x80000008:
code = nCMPP_SendActiveRep(precPkg.recActiveTestRep);
break;
default:
break;
}
return code;
}
/**
*
* @param precPkg RecCCmppPacket
* @return int -1:读包错误; >=0:包序号
*/
public int nCMPP_RecvPacket(RecCCmppPacket precPkg)
{
int i = -1;
if (precPkg == null)
{
return i;
}
int code = -1;
CmppPacket usPacket = new CmppPacket(sock);
int command = nCMPP_getPacket(usPacket);
precPkg.nCmdId = command;
code = command;
switch (command)
{
case 0x00000002:
code = nCMPP_ParseTerminate(usPacket);
RecCTerminate terminate = new
RecCTerminate();
precPkg.recTerminate = terminate;
precPkg.recTerminate.nSeqId = code;
break;
case 0x80000004:
RecCSubmitRep subRep = new RecCSubmitRep();
precPkg.recSubmitRep = subRep;
code = nCMPP_ParseSubmitRep(usPacket, precPkg.recSubmitRep);
break;
case 0x00000005:
RecCDeliver precDeliver = new
RecCDeliver();
precPkg.recDeliver = precDeliver;
RecCDeliverRcpt precDeliverReceipt = new RecCDeliverRcpt();
precPkg.recReceipt = precDeliverReceipt;
code = nCMPP_ParseDeliver(usPacket, precPkg.recDeliver,
precPkg.recReceipt);
break;
case 0x80000006:
RecCQueryRep queryRep = new
RecCQueryRep();
precPkg.recQueryRep = queryRep;
code = nCMPP_ParseQueryRep(usPacket, precPkg.recQueryRep);
break;
case 0x80000007:
RecCCancelRep cancelRep = new
RecCCancelRep();
precPkg.recCancelRep = cancelRep;
code = nCMPP_ParseCancelRep(usPacket, precPkg.recCancelRep);
break;
case 0x00000008:
RecCActiveTest active = new
RecCActiveTest();
precPkg.recActiveTest = active;
code = nCMPP_ParseActive(usPacket, precPkg.recActiveTest);
break;
case 0x80000008:
RecCActiveTestRep activeRep = new
RecCActiveTestRep();
precPkg.recActiveTestRep = activeRep;
code = nCMPP_ParseActiveRep(usPacket, precPkg.recActiveTestRep);
break;
default:
code = command;
break;
}
return code;
}
public int getTimeout()
{
return timeout;
}
public void setTimeout(int timeout)
{
this.timeout = timeout;
}
private int timeout = 2000; //单位毫秒!
public String SPID;
public String CorpID;
public String SPPassword;
public String hostIp = "";
public int port;
public int sendSpeed = 16;
private int version; //CMPP API 的CMPP协议版本
private int sversion; //服务器端CMPP协议版本
public static int maxMsgLenAscii = 159;
public static int maxMsgLenOther = 140;
public CmppSocket sock;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -