XML协议组成Word格式.docx
《XML协议组成Word格式.docx》由会员分享,可在线阅读,更多相关《XML协议组成Word格式.docx(9页珍藏版)》请在冰豆网上搜索。
12002<
/transactiontype>
digest>
7ec8582632678032d25866bd4bce114fv/digest>
agenterid>
889931<
/agenterid>
source>
ivr<
/source>
username〉张三<
/username〉
compress>
DES<
/compress>
/header>
body>
elements>
lotteiyid>
118v/lotteryid>
issues>
1<
/issues>
v/element>
v/elements>
/body>
/message>
注:
实际http传输中,对内容进行编码,编码字符集utf-8(这主要是
考虑到AJAX传输过程是以UTF-8编码)。
开发过程中会遇到这种情况,明明已经发送数据到服务器了,可是服务器收不到数据,遇到这种问题时的处理办法是,查看一下发送程序代码,是否进行了如下设置:
‘contertype'
‘applicaWWxform-urlencoded'
如果有,去除,或者修改成:
‘text/xmlcharsetutf
1.0、消息包
每一个请求/响应的消息包都是一个xml,包含消息头和消息体,对于不同类型的请求/响应,消息头的格式是相同的,而消息体会携带具体的类型的请求/响应信息。
请参照下面的消息包格式定义。
?
xmlversion二”1.0”encoding二”-8t”?
vmessageversion二"
>
vmessengerid>
200911131015330000000001v/messengerid>
20091113101533<
transactiontype>
102<
/transactiontype>
username〉张三<
7ec8582632678032d25866bd4bce114f<
/digest>
800001<
velements>
velement>
lotteryname>
D11<
/lotteryname>
issue>
2009111301v/issue〉
v/body>
整个消息包是一个xml字符串,首先声明xml的版本和编码,这
里定义encoding为utf-8。
在消息包元素message中声明了version属
性,表示该消息包使用的数据通信协议的版本,当前为1.0
1.1消息头
消息头对于所有的交易请求以及对每个交易请求的请求/响应都
具有同样的数据结构。
请参照下面的消息体格式定义。
在后面对交易请求消息体的描述中不再重复说明消息头的结构。
20091113101533000001v/messengerid>
20091113101533v/timestamp>
vtransactiontype>
102v/transactiontype>
vdigest>
7ec8582632678032d25866bd4bce114fv/digest>
vagenterid>
800001v/agenterid>
vusername>
张三v/username>
vsource>
ivrv/source>
vipaddress>
33.22.11.22v/ipaddress>
vcompress>
DESv/compress>
加密用的标签:
使用什么方式加密(DES)
v/header>
header元素定义了消息头的数据结构,其中:
名称
类型
长度
描述
messengerid
String
20
消息编号,格式为yyyymmddhh24miss+六位递增序号。
注:
在非大客户模式下,可以为空。
timestamp
14
格式为:
yyyymmddhh24miss或者yyyy-mm-ddhh24:
mi:
ss
transactiontype
3
交易类型,详见附件
agenteridid
6
代理编号
username
16
用户账号
digest
32
对消息包的摘要,摘要算法为md5,摘要内容为(时间戳+代理密码+消息体)
source
16<
=
用户操作终端来源,女口:
ivr,sms,web
等。
ipaddressaddress
20<
对于digest部分,表中已经定义了需要对消息体的哪些部分进行摘要,这里需要进行更进一步的说明,其中:
代理商密码:
彩票支撑系统会为每个投注代理商分配一个交易访问密码,这个密码不会在消息中直接传输。
无论是投注代理
商向彩票支撑系统发送消息还是彩票支撑系统向某个代理发送消息,都会使用投注代理商的密码来执行摘要。
消息体:
消息包中body元素部分,包含<
与v/body>
。
假如一个数据包的格式如下:
xmlversion='
1.0'
encoding='
utf-8'
?
vmessageversion="
200911131015330000000001<
7ec8582632678032d25866bd4bce114f<
oelement>
errorcode>
0<
/errorcode>
errormsg>
操作成功<
/errormsg>
/oelement>
element>
2012070<
/issue>
lasttime>
86400<
/lasttime>
/elements>
xmlversion="
encoding="
utf-8"
messageversion="
vheader>
messengerid>
20091113101533000001<
/messengerid>
vtimestamp>
20091113101533<
/timestamp>
transactiontype>
12002<
/transactiontype>
digest>
041a1f10e7cd9fe5531a61f8bdef5faa<
/digest>
vcompress>
/compress>
agenterid>
1000002<
/agenterid>
/header>
body>
HmtGfqfbbCvzJvlvv+HjhHmbzgj+JRAutc2wOfw9+rsKAEKJX79jf2chPUk
9XZTaMYphue6K/FeOZ3BNFjdnPsPvvL/1/vA75iGWiU8zKDYa9/jKDwz3Rbe1X6m3hamZ
PMLXz7FSXnD/Ur/BTZqfmta+0yJuMPGcWQEFjVnO/10amdeXoQDJDjP9gmOWb7r7WiMcX
RYTSTmH1F8a5a1tVXQnK6WU4fmDkCU1Yq+RAowxwAH9VzvZiOP8ISyCGHpYPCADWcvpE5RtH0Le674kW29XlisxTJvcVhuDDamnMa0=
/body>
/message>
那么,被摘要的字串应该是(假设投注代理商的密码为111111)
111111<
<
oelement>
errorcode>
操作成功<
v/oelement>
elements>
element>
lotteryid>
/lotteryid>
2009111301<
/issuex/element>
v/elements>
被摘要的body元素部分应该保留消息字串中的所有格式信息,比如空格,回
车符等。
1.2协议中协议头使用说明
协议头中包含一些通用的信息,对于系统中不同的环节,有些协议字段可以不填,有些协议字段需要在应用服务器端填写后,发送到无纸化平台。
vheader〉
vmessengerid〉200911131015330000000001v/messengerid〉vtimestamp〉20091113101533v/timestamp>
800001v/agenterid〉
对于:
flash,ajax+js等客户端模式下,messengerid,digest,agenterid,
username等字段是不需要填写的。
这些信息可以在服务端由具体的服务平台进行被充填写。
因为有些安全信息,是不能在用户的电脑上执行的。
附录A:
DES数据加密
为了数据的安全,XML协议在传输过程中,可以使用加密处理。
1、数据按照PKCS5规则进行补位•(缺7位补7个0x07,缺6位则补6个0x06,以次类推,如果正好8位,也需要补8个0x08)。
2、实际加密模式选择DES-ECB。
3、经过DES加密后的数据必须通过Base64编码转换为明文的字符串。
在XML约定协议的header部分中,增加一个标签compress,女口:
,DES标明为加密的类型,如下:
voelement>
0v/errorcode>
verrormsg>
操作成功v/errormsg>
v/oelement>
vlotteryid>
d11v/lotteryid>
vissue>
2009111301v/issue>
v/message>
需要DES加密的数据:
verrorcode>
d11<
/lotteryid>
加密后提交的数据包:
vtimestamp>
vagenterid>
vbody>
二xxxxdafdfdsafsa==
v/message>
附录B:
数据DES加密与MD5的双重性问题。
MD5是在DES加密前进行的,MD5签名使用的密钥是用的渠道的密钥,DES加密数据使
用的密钥是当前用户的密码明文经过MD5处理后,生成的长度为32字节的十六进制字符串的前16个字符。
比如:
一用户的密码明文为:
1234567890,经过MD5处理后,则数据转成为:
e807f1fcf82d132f9bb018ca6738a19f,则进行DES加密数据时,密钥为:
e0fff2129b1c63a9。
附录C:
GZIP压缩传输
手机客户端与中间件接口传输与接收数据,均需要进行GZIP压缩传输,减少数据库传
输流量。