短信发送API.docx
- 文档编号:17039569
- 上传时间:2023-07-21
- 格式:DOCX
- 页数:57
- 大小:30.54KB
短信发送API.docx
《短信发送API.docx》由会员分享,可在线阅读,更多相关《短信发送API.docx(57页珍藏版)》请在冰点文库上搜索。
短信发送API
标题/Title:
SGIPAPI(JAVA)ForSP
一.目录
二.概述
本文提供的API支持多个SP通过英斯克短信网关iDAP接入短信中心,向终端用户发送短消息。
SP的应用程序需要遵循联通的SGIP1.1协议,调用iDAP的API实现短信发送和点播功能。
作为ISMG厂商,英斯克提供接入的JavaAPI,本文解释了API中JAVAAPI的用法。
三.API文件说明
提供给SP使用的API包名称为spApi.jar,它共包括以下类:
SGIP_Command.class,Seq.class,MsgHead.class,Bind.classBindResp.class,Unbind.class,UnbindResp.class
Submit.class,SubmitResp.class,Deliver.class,DeliverResp.class,Report.class,ReportResp.class,在使用此API前,请正确地将包设置到CLASSPATH环境变量中。
1.类SGIP_Command说明
1.1.1构造函数
1)publicSGIP_Command()
作用:
构造函数,创建一个空的SGIP_Command对象
1.1.2方法
2)publicSGIP_Commandread(InputStreamin)
作用:
接收任何来自网关的命令。
参数:
InputStreamin输入流
异常:
IOException
3)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());
System.out.println(tmp.getSeqno_2());
System.out.println(tmp.getSeqno_3());
System.out.println(resp.GetResult());
}
…
2.类Bind(该类由SGIP_Command类扩展而来)
1.1.3构造函数
1)publicBind(intNodeID)
作用:
构造函数
参数:
NodeID节点编号,300000+CP_ID
2)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.1.4方法
3)publicvoidSetLoginType(intLoginType)
作用:
设置LoginType
参数:
intLoginType
4)publicvoidSetLoginName(StringLoginName)
作用:
设置LoginName
参数:
StringLoginName
5)publicvoidSetLoginPassword(StringPassword)
作用:
设置Password
参数:
StringPassword
6)publicintwrite(OutputStreamout)
作用:
发送命令
参数:
OutputStreamout,输出流
7)publicintreadbody()
作用:
读取从SMG发送过来的BIND命令内容
8)publicintGetLoginType()
作用:
获取SMG的登录类型
返回值:
IntLoginType
9)publicStringGetLoginName()
作用:
获取SMG的登录名
返回值:
StringLoginName
10)publicStringGetLoginPassword()
作用:
获取LoginPassword
返回值:
StringLoginPassword
11)publicintgetTotalLength()
作用:
返回Bind命令的总长度
12)publicintgetCommandID()
作用:
返回Bind名令的总长度
13)publicintgetSeqno_1()
作用:
返回Bind命令的序列号中前四个字节的整数,第一部分源节点编号,NodeID
14)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_ID
1,//logintype
"zhao",//loginname
"zhao");//loginpassword;
…
err=command.write(out);//发送bind
if(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");
command.SetLoginPassword("zhao");
…
err=command.write(out);//发送bind
if(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());
}
…
3.类BindResp(该类由SGIP_Command类扩展而来)
1.1.5构造函数
1)publicBindResp(intNodeID)
作用:
构造函数
参数:
NodeID节点标志,300000+CP_ID
2)publicBindResp(intNodeID,intResult)
作用:
构造函数
参数:
NodeID,节点标志
Result,Bind执行命令是否成功。
0:
执行成功
其它:
错误码
1.1.6方法
3)publicvoidSetResult(intResult)
作用:
设置Result
参数:
intResult
4)publicintwrite(OutputStreamout)
作用:
发送命令
参数:
OutputStreamout,输出流
5)publicintreadbody()
作用:
读取从SMG发送过来的BindResp命令内容
6)publicintGetResult()
作用:
获取SMG的登录Result结果
返回值:
IntResult
7)publicintgetTotalLength()
作用:
返回BindResp命令的总长度
8)publicintgetCommandID()
作用:
返回BindResp名令的总长度
9)publicintgetSeqno_1()
作用:
返回BindResp命令的序列号中前四个字节的整数,第一部分源节点编号,NodeID
10)publicintgetSeqno_2()
作用:
返回BindResp命令的序列号中间四个字节的整数,第二部分时间(月日时分秒)
11)publicintgetSeqno_3()
作用:
返回BindResp命令的序列号后四个字节的整数, 第三部分序号
12)示例:
(具体例子见后面的完整程序)
1.发送bindresp
…
Socketso=null;
OutputStreamout=null;
InputStreaminput=null;
so=newSocket("192.168.0.30",8801);
out=newDataOutputStream(so.getOutputStream());
input=newDataInputStream(so.getInputStream());
BindRespbindresp=newBindResp(399000,//nodeid3+CP_id
0);//result
…
err=bindresp.write(out);//发送bindresp
if(err!
=0)
{
System.out.println("err"+err);
}
…
2.发送bindresp
…
Socketso=null;
OutputStreamout=null;
InputStreaminput=null;
so=newSocket("192.168.0.30",8801);
out=newDataOutputStream(so.getOutputStream());
input=newDataInputStream(so.getInputStream());
BindRespbindresp=newBindResp(399000//nodeid3+CP_id
);
…
bindresp.SetResult
(1);
err=bindresp.write(out);//发送bindresp
if(err!
=0)
{
System.out.println("err"+err);
}
…
3.接收bindresp
…
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;
BindRespresp=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());
System.out.println(tmp.getSeqno_2());
System.out.println(tmp.getSeqno_3());
System.out.println(resp.GetResult());
}
…
4.类Unbind(该类由SGIP_Command类扩展而来)
Unbind操作由Unbind命令和Unbind_Resp应答组成。
通信连接建立以后,客户端如果要停止通信,需要发送Unbind命令;服务器端收到Unbind命令后,向客户端发送Unbind_Resp相应,然后双方断开连接。
1.1.7构造函数
Unbind命令没有消息体。
1)publicUnbind(intNodeID)
作用:
构造函数
参数:
NodeID节点标志,300000+CP_ID
1.1.8方法
2)publicintwrite(OutputStreamout)
作用:
发送命令
参数:
OutputStreamout,输出流
3)publicintgetTotalLength()
作用:
返回Unbind命令的总长度
4)publicintgetCommandID()
作用:
返回Unbind名令的总长度
5)publicintgetSeqno_1()
作用:
返回Unbind命令的序列号中前四个字节的整数,第一部分源节点编号,NodeID
6)publicintgetSeqno_2()
作用:
返回Unbind命令的序列号中间四个字节的整数,第二部分时间(月日时分秒)
7)publicintgetSeqno_3()
作用:
返回Unbind命令的序列号后四个字节的整数, 第三部分序号
8)示例:
1.发送unbind
…
Socketso=null;
OutputStreamout=null;
InputStreaminput=null;
so=newSocket("192.168.0.30",8801);
out=newDataOutputStream(so.getOutputStream());
input=newDataInputStream(so.getInputStream());
Unbindunbind=newUnbind(399000//nodeid3+CP_id
);
…
err=unbind.write(out);//发送unbind
if(err!
=0)
{
System.out.println("err"+err);
}
…
2.接收unbind
…
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;
Unbindunbind=null;
…
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());
}
…
5.类UnbindResp(该类由SGIP_Command类扩展而来)
UnbindResp应答没有消息体。
1.1.9构造函数
1)publicUnbindResp(intNodeID)
作用:
构造函数
参数:
NodeID节点标志,300000+CP_ID
1.1.10方法
2)publicintwrite(OutputStreamout)
作用:
发送命令
参数:
OutputStreamout,输出流
3)publicintgetTotalLength()
作用:
返回UnbindResp命令的总长度
4)publicintgetCommandID()
作用:
返回UnbindResp名令的总长度
5)publicintgetSeqno_1()
作用:
返回UnbindResp命令的序列号中前四个字节的整数,第一部分源节点编号,NodeID
6)publicintgetSeqno_2()
作用:
返回UnbindResp命令的序列号中间四个字节的整数,第二部分时间(月日时分秒)
7)publicintgetSeqno_3()
作用:
返回UnbindResp命令的序列号后四个字节的整数, 第三部分序号
8)示例:
1.发送unbindresp
…
Socketso=null;
OutputStreamout=null;
InputStreaminput=null;
so=newSocket("192.168.0.30",8801);
out=newDataOutputStream(so.getOutputStream());
input=newDataInputStream(so.getInputStream());
UnbindRespUnresp=newUnbindResp(399000);//nodeid3+CP_id
Unresp.write(output);
…
2.接收unbindresp
…
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;
UnbindRespunbindresp=null;
…
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());
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 短信 发送 API