东软SMIAS短信接入Java开发

王朝java/jsp·作者佚名  2008-06-01
窄屏简体版  字體: |||超大  

package org.crabo.blog;import org.apache.commons.logging.Log;

import org.apache.commons.logging.LogFactory;

import com.commerceware.cmpp.*;public class SMSAPI {

static Log log;

static cmppe_result result;

static CMPP cmpp;

static conn_desc connDesc; public static void main(String[] args) {

String loginID = "*****";

String userID = "*****\0";

String passWord = "*****";

String icpID = "*****\0";

String dst = "*****";

String mess = "*****";

String svcType = "*****\0";

String ip = "*****";

int port = 7890;

////////////////////////////////////////////////////////

log = LogFactory.getLog(SMSAPI.class);

result = null;

cmpp = new CMPP();

connDesc = new conn_desc();

////////////////////////////////////////////////////////

//截取多个联系人

String[] dstArray = dst.split(";");

//计算消息截取段数 :56/70 = 0 => messPart=messPart=1

int messLen = mess.length();

int messPart = messLen/70 +1;

String[] messArray = new String[messPart];

for(int i=0;i<messPart;i++)

{

messArray[i] = mess.substring(70*i,(70*(i+1)<messLen?70*(i+1):messLen))+"\0";

}

////////////////////////////////////////////////////////

log.info("开始运行... ");

try{

cmpp.cmpp_connect_to_ismg(ip, port, connDesc);

log.info("连接完毕!");

cmpp.cmpp_login(connDesc, loginID, password, (byte)2, 0x12, (int)System.currentTimeMillis());

result = cmpp.readResPack(connDesc);

if (result.stat != CMPP.CMPPE_RSP_SUCCESS)

throw new Exception("状态错误,stat "+ result.stat);

else

log.info("登录成功! ");

}catch(Exception e){

log.error("登录失败 " + e);

System.exit(0);

}

////////////////////////////////////////////////////////

log.info("开始发送... ");

try{

cmppe_submit submitStruct = new cmppe_submit();

submitStruct.set_svctype(svcType.getBytes());

submitStruct.set_srcaddr(userID.getBytes());

submitStruct.set_ducount((byte)1);

submitStruct.set_msgmode((byte)1);

submitStruct.set_icpid(icpID.getBytes());

//submitStruct.set_feetype((byte)1);

//submitStruct.set_infofee(300);

byte[][] dstByte= {{0,0},{0,0}};

byte[] message;

for(int i=0;i<dstArray.length;i++) //逐个联系人

{

dstArray[i] += "\0"; //每个号码必须以byte 0结尾

dstByte[0] = dstArray[i].getBytes();

submitStruct.set_dstaddr(dstByte);

for(int j=0;j<messArray.length;j++) //逐条消息(70个字分组)

{

message = messArray[j].getBytes();

submitStruct.set_msg((byte)15, message.length, message);

cmpp.cmpp_submit(connDesc, submitStruct);

ReadResponse();//Submit

ReadResponse();//Deliver

}

}

}catch(Exception e){

log.error("发送异常 "+ e);

System.exit(1);

}

////////////////////////////////////////////////////////

log.info("登出 ");

try{

cmpp.cmpp_logout(connDesc);

}catch(Exception e)

{

log.error("登出异常 "+ e);

}

}

private static void ReadResponse()

{

try{

result= cmpp.readResPack(connDesc);

switch(result.pack_id){

case CMPP.CMPPE_NACK_RESP:

log.info("Get Nack Pack");

break;

case CMPP.CMPPE_SUBMIT_RESP:

if(result.stat==0)

log.info("Get Sumit Resp. stat = " + result.stat);

else

log.error("Get Sumit Resp. stat = " + result.stat);

break;

case CMPP.CMPPE_DELIVER:

cmppe_deliver_result deliverResult = (cmppe_deliver_result)result;

log.info("Get Deliver. stat = " + deliverResult.stat);

if(deliverResult.stat != 0)

{

log.info("Deliver Status Rpt " + deliverResult.status_rpt);

log.info("Deliver Src " + new String(deliverResult.src_addr));

log.info("Deliver Dst " + new String(deliverResult.dst_addr));

//log.info("Deliver Message "+ new String(deliverResult.short_msg,"GB2312"));

}

cmpp.cmpp_send_deliver_resp(connDesc, deliverResult.seq, deliverResult.stat);

break;

default:

break;

}

}catch(Exception e){

log.error("ReadResponse异常 " + e);

}

}}

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
© 2005- 王朝網路 版權所有 導航