SGIPAPI(java).doc_第1页
SGIPAPI(java).doc_第2页
SGIPAPI(java).doc_第3页
SGIPAPI(java).doc_第4页
SGIPAPI(java).doc_第5页
已阅读5页,还剩37页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Sxit 深讯公司SGIP接口标题/Title: SGIP API(JAVA) For SP目录1API文件说明21.1类SGIP_Command说明21.1.1构造函数21.1.2方法21.2类Bind (该类由SGIP_Command类扩展而来)31.2.1构造函数31.2.2方法31.3类Bind Resp(该类由SGIP_Command类扩展而来)61.3.1构造函数61.3.2方法61.4类Unbind (该类由SGIP_Command类扩展而来)91.4.1构造函数91.4.2方法91.5类Unbind Resp(该类由SGIP_Command类扩展而来)111.5.1构造函数111.5.2方法111.6类Submit(该类由SGIP_Command类扩展而来)131.6.1构造函数131.6.2方法151.7类SubmitResp(该类由SGIP_Command类扩展而来)191.7.1构造函数191.7.2方法191.8类Report(该类由SGIP_Command类扩展而来)211.8.1构造函数211.8.2方法211.9ReportResp(该类由SGIP_Command类扩展而来)231.9.1构造函数231.9.2方法231.10类Deliver(该类由SGIP_Command类扩展而来)241.10.1构造函数241.10.2方法241.11类DeliverResp(该类由SGIP_Command类扩展而来)261.11.1构造函数261.11.2方法261.12类SGIP_Exception272完整的示例程序:283附录:38概述本文提供的API支持多个SP通过集团短信通接入短信中心,向终端用户发送短消息。SP的应用程序需要遵循联通的SGIP1.1协议,调用集团短信通的API实现短信发送和点播功能。作为ISMG厂商,深讯提供接入的Java API,本文解释了API中JAVA API的用法。1 API文件说明提供给SP使用的API包名称为spApi.jar,它共包括以下类:SGIP_Command.class,Seq.class,MsgHead.class,Bind.class BindResp.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)public SGIP_Command()作用:构造函数,创建一个空的SGIP_Command对象1.1.2 方法2)public SGIP_Command read(InputStream in) 作用:接收任何来自网关的命令。 参数:InputStream in 输入流 异常: IOException3)public int getCommandID() 作用:获得读取的命令的代码 返回值:命令代码4)示例:(具体示例见后面的完整程序)/接收sgip的消息Socket so=null; OutputStream out=null; InputStream input=null;so=new Socket(192.168.0.30,8801); out=new DataOutputStream(so.getOutputStream(); input = new DataInputStream(so.getInputStream();SGIP_Command sgip=new SGIP_Command();/创建一个空的SGIP_Command对象SGIP_Command tmpnull; 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(); System.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)public Bind(int NodeID)作用:构造函数参数:NodeID节点编号,300000+CP_ID2)public Bind(int NodeID,int LoginType,String LoginName,String LoginPassword)作用:构造函数参数:NodeID, 节点编号LoginType, 登录类型。1:SP向SMG建立的连接,用于发送命令2:SMG向SP建立的连接,用于发送命令3:SMG之间建立的连接,用于转发命令4:SMG向GNS建立的连接,用于路由表的检索和维护5:GNS向SMG建立的连接,用于路由表的更新6:主备GNS之间建立的连接,用于主备路由表的一致性11:SP与SMG以及SMG之间建立的测试连接,用于跟踪测试其它:保留LoginName, 服务器端给客户端分配的登录名LoginPassword, 服务器端和Login Name对应的密码1.2.2 方法3)public void SetLoginType(int LoginType)作用:设置LoginType参数:int LoginType4)public void SetLoginName(String LoginName)作用:设置LoginName参数:String LoginName5) public void SetLoginPassword(String Password)作用:设置Password参数:String Password6) public int write(OutputStream out)作用:发送命令参数:OutputStream out,输出流7) public int readbody()作用:读取从SMG发送过来的BIND命令内容8)public int GetLoginType()作用:获取SMG的登录类型返回值:Int LoginType9)public String GetLoginName()作用:获取SMG的登录名返回值:String LoginName10)public String GetLoginPassword()作用:获取LoginPassword返回值:String LoginPassword11) public int getTotalLength()作用:返回Bind命令的总长度12) public int getCommandID()作用:返回Bind名令的总长度13)public int getSeqno_1()作用:返回Bind命令的序列号中前四个字节的整数,第一部分源节点编号,NodeID14) public int getSeqno_2()作用:返回Bind命令的序列号中间四个字节的整数,第二部分时间(月日时分秒)15)public int getSeqno_3()作用:返回Bind命令的序列号后四个字节的整数,第三部分序号16)示例:(具体例子见后面的完整程序)1. 发送bindSocket so=null; OutputStream out=null; InputStream input=null;so=new Socket(192.168.0.30,8801); out=new DataOutputStream(so.getOutputStream(); input = new DataInputStream(so.getInputStream();Bind command=new Bind(399000,/nodeID 3+CP_ID 1, /login type zhao,/login name zhao);/login password; err=command.write(out);/ 发送bind if(err!=0) System.out.println(err+err); 2. 发送bindSocket so=null; OutputStream out=null; InputStream input=null;so=new Socket(192.168.0.30,8801); out=new DataOutputStream(so.getOutputStream(); input = new DataInputStream(so.getInputStream();Bind command=new Bind(399000/nodeID 3+CP_ID);command.SetLoginType(1); command.SetLoginName(zhao); command.SetLoginPassword(zhao); err=command.write(out);/ 发送bind if(err!=0) System.out.println(err+err); 3. 接收bindSocket so=null; OutputStream out=null; InputStream input=null;so=new Socket(192.168.0.30,8801); out=new DataOutputStream(so.getOutputStream(); input = new DataInputStream(so.getInputStream();SGIP_Command sgip=new SGIP_Command();/创建一个空的SGIP_Command对象SGIP_Command tmpnull;Bind bindnull; 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 类Bind Resp(该类由SGIP_Command类扩展而来)1.3.1 构造函数1)public BindResp(int NodeID)作用:构造函数参数:NodeID节点标志,300000+CP_ID2)public BindResp(int NodeID,int Result)作用:构造函数参数:NodeID, 节点标志Result, Bind执行命令是否成功。0:执行成功其它:错误码1.3.2 方法3)public void SetResult(int Result)作用:设置Result参数:int Result4) public int write(OutputStream out)作用:发送命令参数:OutputStream out,输出流5) public int readbody()作用:读取从SMG发送过来的BindResp命令内容6)public int GetResult()作用:获取SMG的登录Result结果返回值:Int Result7)public int getTotalLength()作用:返回BindResp命令的总长度8) public int getCommandID()作用:返回BindResp名令的总长度9) public int getSeqno_1()作用:返回BindResp命令的序列号中前四个字节的整数,第一部分源节点编号,NodeID10) public int getSeqno_2()作用:返回BindResp命令的序列号中间四个字节的整数,第二部分时间(月日时分秒)11)public int getSeqno_3()作用:返回BindResp命令的序列号后四个字节的整数,第三部分序号12)示例:(具体例子见后面的完整程序)1. 发送bindrespSocket so=null; OutputStream out=null; InputStream input=null;so=new Socket(192.168.0.30,8801); out=new DataOutputStream(so.getOutputStream(); input = new DataInputStream(so.getInputStream();BindResp bindresp=new BindResp(399000,/node id 3CP_id 0);/result err= bindresp.write(out);/ 发送bindresp if(err!=0) System.out.println(err+err); 2. 发送bindrespSocket so=null; OutputStream out=null; InputStream input=null;so=new Socket(192.168.0.30,8801); out=new DataOutputStream(so.getOutputStream(); input = new DataInputStream(so.getInputStream();BindResp bindresp=new BindResp(399000/node id 3CP_id );bindresp.SetResult(1); err= bindresp.write(out);/ 发送bindresp if(err!=0) System.out.println(err+err); 3. 接收bindrespSocket so=null; OutputStream out=null; InputStream input=null;so=new Socket(192.168.0.30,8801); out=new DataOutputStream(so.getOutputStream(); input = new DataInputStream(so.getInputStream();SGIP_Command sgip=new SGIP_Command();/创建一个空的SGIP_Command对象SGIP_Command tmpnull;BindResp respnull; 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(); System.out.println(tmp.getSeqno_2(); System.out.println(tmp.getSeqno_3(); System.out.println(resp.GetResult(); 1.4 类Unbind (该类由SGIP_Command类扩展而来)Unbind操作由Unbind命令和Unbind_Resp应答组成。通信连接建立以后,客户端如果要停止通信,需要发送Unbind命令;服务器端收到Unbind命令后,向客户端发送Unbind_Resp相应,然后双方断开连接。1.4.1 构造函数Unbind命令没有消息体。1)public Unbind(int NodeID)作用:构造函数参数:NodeID节点标志,300000+CP_ID1.4.2 方法2)public int write(OutputStream out)作用:发送命令参数:OutputStream out,输出流3)public int getTotalLength()作用:返回Unbind命令的总长度4) public int getCommandID()作用:返回Unbind名令的总长度5)public int getSeqno_1()作用:返回Unbind命令的序列号中前四个字节的整数,第一部分源节点编号,NodeID6) public int getSeqno_2()作用:返回Unbind命令的序列号中间四个字节的整数,第二部分时间(月日时分秒)7)public int getSeqno_3()作用:返回Unbind命令的序列号后四个字节的整数,第三部分序号8) 示例:1. 发送unbindSocket so=null; OutputStream out=null; InputStream input=null;so=new Socket(192.168.0.30,8801); out=new DataOutputStream(so.getOutputStream(); input = new DataInputStream(so.getInputStream();Unbind unbind=new Unbind (399000/node id 3CP_id ); err= unbind.write(out);/ 发送unbind if(err!=0) System.out.println(err+err); 2. 接收unbindSocket so=null; OutputStream out=null; InputStream input=null;so=new Socket(192.168.0.30,8801); out=new DataOutputStream(so.getOutputStream(); input = new DataInputStream(so.getInputStream();SGIP_Command sgip=new SGIP_Command();/创建一个空的SGIP_Command对象SGIP_Command tmpnull;Unbind unbindnull; tmp=sgip.read(input);/ 接收sgip的消息if(sgip.getCommandID()=SGIP_Command.ID_SGIP_UNBIND) unbind =(Unbind)tmp;/强制转换 System.out.println(tmp.getSeqno_1(); System.out.println(tmp.getSeqno_2(); System.out.println(tmp.getSeqno_3(); System.out.println(unbind.GetResult(); 1.5 类Unbind Resp(该类由SGIP_Command类扩展而来)UnbindResp应答没有消息体。1.5.1 构造函数1)public UnbindResp(int NodeID)作用:构造函数参数:NodeID节点标志,300000+CP_ID1.5.2 方法2)public int write(OutputStream out)作用:发送命令参数:OutputStream out,输出流3)public int getTotalLength()作用:返回UnbindResp命令的总长度4) public int getCommandID()作用:返回UnbindResp名令的总长度5)public int getSeqno_1()作用:返回UnbindResp命令的序列号中前四个字节的整数,第一部分源节点编号,NodeID6) public int getSeqno_2()作用:返回UnbindResp命令的序列号中间四个字节的整数,第二部分时间(月日时分秒)7)public int getSeqno_3()作用:返回UnbindResp命令的序列号后四个字节的整数,第三部分序号8) 示例:1. 发送unbindrespSocket so=null; OutputStream out=null; InputStream input=null;so=new Socket(192.168.0.30,8801); out=new DataOutputStream(so.getOutputStream(); input = new DataInputStream(so.getInputStream(); UnbindResp Unresp=new UnbindResp(399000);/node id 3+CP_id Unresp.write(output); 2. 接收unbindresp Socket so=null; OutputStream out=null; InputStream input=null;so=new Socket(192.168.0.30,8801); out=new DataOutputStream(so.getOutputStream(); input = new DataInputStream(so.getInputStream();SGIP_Command sgip=new SGIP_Command();/创建一个空的SGIP_Command对象SGIP_Command tmpnull;UnbindResp unbindrespnull; tmp=sgip.read(input);/ 接收sgip的消息if(sgip.getCommandID()=SGIP_Command. ID_SGIP_UNBIND_RESP) unbindresp =(UnbindResp)tmp;/强制转换 System.out.println(tmp.getSeqno_1(); System.out.println(tmp.getSeqno_2(); System.out.println(tmp.getSeqno_3(); System.out.println(unbindresp.GetResult(); 1.6 类Submit(该类由SGIP_Command类扩展而来)在SP和SMG的通信中,SP用Submit命令向SMG提交MT短消息,发送到用户的手机中。SMG接收到Submit命令,会返回Submit_Resp应答。SMG根据Submit命令中的付费号码,判断出该命令是否应从本地SMSC发送,如果属于本地发送,则直接发送到相应的SMSC,否则路由至相应的SMG。1.6.1 构造函数1)public Submit( int NodeID, String SPNumber, String ChargeNumber, int UserCount, String UserNumber, String CorpId, String ServiceType, int FeeType, String FeeValue, String GivenValue, int AgentFlag, int MOrelatetoMTFlag, int Priority, String ExpireTime, String ScheduleTime, int ReportFlag, int TP_pid, int TP_udhi, int MessageCoding, int MessageType, int MessageLength, String MessageContent)作用:构造对象Submit。(消息内容为非二进制)2)public Submit( int NodeID, String SPNumber, String ChargeNumber, int UserCount, String UserNumber, String CorpId, String ServiceType, int FeeType, String FeeValue, String GivenValue, int AgentFlag, int MOrelatetoMTFlag, int Priority, String ExpireTime, String ScheduleTime, int ReportFlag, int TP_pid, int TP_udhi, int MessageCoding, int MessageType, int MessageLength, Byte MessageContent)作用:构造Submit对象(消息体为二进制)参数:Int NodeID,节点编号String SPNumber, SP的接入号码String ChargeNumber, 付费号码,手机号码前加“86”国别标志;当且仅当群发且对用户收费时为空;如果为空,则该条短消息产生的费用由UserNumber代表的用户支付;如果为全零字符串“000000000000000000000”,表示该条短消息产生的费用由SP支付。 int UserCount, 接收短消息的手机数量,取值范围1至100String UserNumber, 接收该短消息的手机号,该字段重复UserCount指定的次数,手机号码前加“86”国别标志 String CorpId, 企业代码,取值范围0-99999 String ServiceType, 业务代码,由SP定义 int FeeType, 计费类型 String FeeValue, 取值范围0-99999,该条短消息的收费值,单位为分,由SP定义对于包月制收费的用户,该值为月租费的值String GivenValue, 取值范围0-99999,赠送用户的话费,单位为分,由SP定义,特指由SP向用户发送广告时的赠送话费 int AgentFlag, 代收费标志,0:应收;1:实收 int MOrelatetoMTFlag, 引起MT消息的原因0-MO点播引起的第一条MT消息;1-MO点播引起的非第一条MT消息;2-非MO点播引起的MT消息;3-系统反馈引起的MT消息。 int Priority, 优先级0-9从低到高,默认为0String ExpireTime, 短消息寿命的终止时间,如果为空,表示使用短消息中心的缺省值。时间内容为16个字符,格式为”yymmddhhmmsstnnp” ,其中“tnnp”取固定值“032+”,即默认系统为北京时间String ScheduleTime, 短消息定时发送的时间,如果为空,表示立刻发送该短消息。时间内容为16个字符,格式为“yymmddhhmmsstnnp” ,其中“tnnp”取固定值“032+”,即默认系统为北京时间 int ReportFlag, 状态报告标记0-该条消息只有最后出错时要返回状态报告1-该条消息无论最后是否成功都要返回状态报告2-该条消息不需要返回状态报告其它-保留缺省设置为0 int TP_pid, GSM协议类型。详细解释请参考GSM03.40中的9.2.3.9(见附录) int TP_udhi, GSM协议类型。详细解释请参考GSM03.40中的9.2.3.23,仅使用1位,右对齐(见附录) int MessageCoding, 短消息的编码格式。0:纯ASCII字符串3:写卡操作4:二进制编码8:UCS2编码15: GBK编码 int MessageType, 信息类型:0-短消息信息其它:待定int MessageLength, 消息长度 String MessageContent, 短消息的内容(消息体为非二进制) 或者Byte MessageContent, 短消息的内容(消息体为二进制)1.6.2 方法2)public void setSPNumber(String SPNumber)作用:设置SPNumber3) public void setChargeNumber(String ChargeNumber)作用:设置ChargeNumber4) public int setUserNumber(String dest_Mobile)作用:设置UserNumber5)public void setCorpId(String CorpId)作用:设置CorpId6) public void setServiceType(String ServiceType)作用:设置ServiceType7)public void setFeeType(int FeeType)作用:设置FeeType8)public void setFeeValue(String FeeValue)作用:设置FeeValue)public void setAgentFlag(int AgentFlag)作用:设置AgentFlag10) public void setMOrelatetoMTFlag(int MOrelatetoMTFlag)作用:设置MOrelatetoMTFlag11) public void setPriority(int Priority)作用:设置Priority12) public void setExpireTime(String ExpireTime)作用:设置ExpireTime13) public void setScheduleTime(String ScheduleTime)作用:设置ScheduleTime14) public void setReportFlag(int ReportFlag)作用:设置ReportFlag15) public void setTP_pid(int TP_pid)作用:设置TP_pid16) public void setTP_udhi(int TP_udhi)作用:设置TP_udhi17) public void setMessageType(int MessageType)作用:设置MessageType18) public int setContent(int MessageCoding,String MessageContent)作

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论