Sxit深讯公司SGIP接口Page1标题/Title:SGIPAPI(JAVA)ForSP目录1API文件说明21.1类SGIP_Command说明21.1.1构造函数21.1.2方法21.2类Bind(该类由SGIP_Command类扩展而来)31.2.1构造函数31.2.2方法31.3类BindResp(该类由SGIP_Command类扩展而来)51.3.1构造函数51.3.2方法61.4类Unbind(该类由SGIP_Command类扩展而来)81.4.1构造函数81.4.2方法81.5类UnbindResp(该类由SGIP_Command类扩展而来)101.5.1构造函数101.5.2方法101.6类Submit(该类由SGIP_Command类扩展而来)121.6.1构造函数121.6.2方法141.7类SubmitResp(该类由SGIP_Command类扩展而来)181.7.1构造函数181.7.2方法181.8类Report(该类由SGIP_Command类扩展而来)201.8.1构造函数201.8.2方法201.9ReportResp(该类由SGIP_Command类扩展而来)221.9.1构造函数221.9.2方法221.10类Deliver(该类由SGIP_Command类扩展而来)221.10.1构造函数231.10.2方法231.11类DeliverResp(该类由SGIP_Command类扩展而来)251.11.1构造函数251.11.2方法251.12类SGIP_Exception252完整的示例程序:273附录:37Sxit深讯公司SGIP接口Page2概述本文提供的API支持多个SP通过集团短信通接入短信中心,向终端用户发送短消息。SP的应用程序需要遵循联通的SGIP1.1协议,调用集团短信通的API实现短信发送和点播功能。作为ISMG厂商,深讯提供接入的JavaAPI,本文解释了API中JAVAAPI的用法。1API文件说明提供给SP使用的API包名称为spApi.jar,它共包括以下类:SGIP_Command.class,Seq.class,MsgHead.class,Bind.classBindResp.class,Unbind.class,UnbindResp.classSubmit.class,SubmitResp.class,Deliver.class,DeliverResp.class,Report.class,ReportResp.class,在使用此API前,请正确地将包设置到CLASSPATH环境变量中。1.1类SGIP_Command说明1.1.1构造函数1)publicSGIP_Command()作用:构造函数,创建一个空的SGIP_Command对象1.1.2方法2)publicSGIP_Commandread(InputStreamin)作用:接收任何来自网关的命令。参数:InputStreamin输入流异常:IOException3)publicintgetCommandID()作用:获得读取的命令的代码返回值:命令代码4)示例:(具体示例见后面的完整程序)//接收sgip的消息…Socketso=null;OutputStreamout=null;InputStreaminput=null;so=newSocket(192.168.0.30,8801);out=newDataOutputStream(so.getOutputStream());input=newDataInputStream(so.getInputStream());SGIP_Commandsgip=newSGIP_Command();//创建一个空的SGIP_Command对象SGIP_Commandtmp=null;…tmp=sgip.read(input);//接收sgip的消息…if(sgip.getCommandID()==SGIP_Command.ID_SGIP_BIND_RESP){resp=(BindResp)tmp;//强制转换resp.readbody();//解包System.out.println(tmp.getSeqno_1());Sxit深讯公司SGIP接口Page3System.out.println(tmp.getSeqno_2());System.out.println(tmp.getSeqno_3());System.out.println(resp.GetResult());}…1.2类Bind(该类由SGIP_Command类扩展而来)1.2.1构造函数1)publicBind(intNodeID)作用:构造函数参数:NodeID节点编号,300000+CP_ID2)publicBind(intNodeID,intLoginType,StringLoginName,StringLoginPassword)作用:构造函数参数:NodeID,节点编号LoginType,登录类型。1:SP向SMG建立的连接,用于发送命令2:SMG向SP建立的连接,用于发送命令3:SMG之间建立的连接,用于转发命令4:SMG向GNS建立的连接,用于路由表的检索和维护5:GNS向SMG建立的连接,用于路由表的更新6:主备GNS之间建立的连接,用于主备路由表的一致性11:SP与SMG以及SMG之间建立的测试连接,用于跟踪测试其它:保留LoginName,服务器端给客户端分配的登录名LoginPassword,服务器端和LoginName对应的密码1.2.2方法3)publicvoidSetLoginType(intLoginType)作用:设置LoginType参数:intLoginType4)publicvoidSetLoginName(StringLoginName)作用:设置LoginName参数:StringLoginName5)publicvoidSetLoginPassword(StringPassword)作用:设置Password参数:StringPassword6)publicintwrite(OutputStreamout)作用:发送命令参数:OutputStreamout,输出流7)publicintreadbody()作用:读取从SMG发送过来的BIND命令内容8)publicintGetLoginType()作用:获取SMG的登录类型返回值:IntLoginType9)publicStringGetLoginName()作用:获取SMG的登录名返回值:StringLoginNameSxit深讯公司SGIP接口Page410)publicStringGetLoginPassword()作用:获取LoginPassword返回值:StringLoginPassword11)publicintgetTotalLength()作用:返回Bind命令的总长度12)publicintgetCommandID()作用:返回Bind名令的总长度13)publicintgetSeqno_1()作用:返回Bind命令的序列号中前四个字节的整数,第一部分源节点编号,NodeID14)publicintgetSeqno_2()作用:返回Bind命令的序列号中间四个字节的整数,第二部分时间(月日时分秒)15)publicintgetSeqno_3()作用:返回Bind命令的序列号后四个字节的整数,第三部分序号16)示例:(具体例子见后面的完整程序)1.发送bind…Socketso=null;OutputStreamout=null;InputStreaminput=null;so=newSocket(192.168.0.30,8801);out=newDataOutputStream(so.getOutputStream());input=newDataInputStream(so.getInputStream());Bindcommand=newBind(399000,//nodeID3+CP_ID1,//logintypezhao,//loginnamezhao);//loginpassword;…err=command.write(out);//发送bindif(err!=0){System.out.println(err+err);}…2.发送bind…Socketso=null;OutputStreamout=null;InputStreaminput=null;so=newSocket(192.168.0.30,8801);out=newDataOutputStream(so.getOutputStream());input=newDataInputStream(so.getInputStream());Bindcommand=newBind(399000//nodeID3+CP_ID);command.SetLoginType(1);command.SetLoginName(zhao);Sxit深讯公司SGIP接口Page5command.SetLoginPassword(zhao);…err=command.write(out);//发送bindif(err!=0){System.out.println(err+err);}…3.接收bind…Socketso=null;OutputStreamout=null;InputStreaminput=null;so=newSocket(192.168.0.30,8801);out=newDataOutputStream(so.getOutputStream());input=newDataInputStream(so.getInputStream());SGIP_Commandsgip=newSGIP_Command();//创建一个空的SGIP_Command对象SGIP_Commandtmp=null;Bindbind=null;…tmp=sgip.read(input);//接收sgip的消息…if(sgip.getCommandID()==SGIP_Command.ID_SGIP_BIND){bind=(Bind)tmp;//强制转换bind.readbody();//解包System.out.println(tmp.getSeqno_1());System.out.println(tmp.getSeqno_2());System.out.println(tmp.getSeqno_3());System.out.println(bind.GetResult());}…1.3类BindResp(该类由SGIP_Command类扩展而来)1.3.1构造函数1)publicBindResp(intNodeID)作用:构造函数参数:NodeID节点标志,300000+CP_ID2)publicBindResp(intNodeID,intResult)作用:构造函数参数:NodeID,节点标志Result,Bind执行命令是否成功。Sxit深讯公司SGIP接口Page60:执行成功其它:错误码1.3.2方法3)publicvoidSetResult(intResult)作用:设置Result参数:intResult4)publicintwrite(OutputStreamout)作用:发送命令参数:OutputStreamout,输出流5)publicintreadbody()作用:读取从SMG发送过来的BindResp命令内容6)publicintGetResult()作用:获取SMG的登录Result结果返回值:IntResult7)publicintgetTotalLength()作用:返回BindResp命令的总长度8)publicintgetCommandID()作用:返回BindResp名