说明:
TVSS 企业端应用,如:企业内部ERP,办公自动化等,作为WebService接口的客户端
GPS GPS监控平台,作为WebService接口的服务端
一、接口报文标准
1.1 报文整体标准
1.1.1 报文文件格式
文件格式包括XML声明,必须在最开始声明如下所示:
<?xml version="1.0" encoding="GBK"?>
1.1.2 报文整体结构
XML块采用层次化结构数据块作为请求与响应的数据文件内容,数据块如下所示:
<?xml version="1.0" encoding="GBK"?>
<tvss>
<head>
消息头……
</head>
<body>
消息体……
<body>
</tvss>
1.1.3 标签命名规范
采用camelCase命名法,即第一个单词小写,此后每个单词的首字母大写。如:accessCode。
XML 元素都须有关闭标签,标签对大小写敏感。
1.1.4 标签内容规范
在 XML 中,有 5 个预定义的实体引用:
< | < | 小于 |
> | > | 大于 |
& | & | 和号 |
&apos | ' | 单引号 |
" | " | 双引号 |
(注意:XML 中,只有字符 "<" 和 "&" 确实是非法的。大于号是合法的,但是用实体引用来代替它是一个好习惯,TVSS要求用实体引用来代替。)
1.2 接入报文标准
1.2.1 请求报文
1.2.1.1 请求报文头(reqHead)
标记(Tag) | 说明 | 可空 | 格式 | 出现次数 |
---|---|---|---|---|
<head> | 报文头开始 | 1 | ||
<accessCode> | 接入代码 | 否 | 字符1-20位 | 1 |
<identify> | 标识符 | 否 | 字符0-32位 | 1 |
<businessType> | 业务类型: | 否 | 字符1-20位 | 1 |
</head> | 报文头结束 |
1.2.1.2 请求报文体(reqBody)
标记(Tag) | 说明 | 可空 | 格式 | 出现次数 |
---|---|---|---|---|
<body> | 报文体开始 | 1 | ||
<reqMsg> | 请求报文体开始 | 1 | ||
…… | 请求报文体具体内容 | |||
</reqMsg> | 请求报文体结束 | |||
</body> | 报文体结束 |
1.2.2 响应报文
1.2.2.1 响应报文头(respHead)
标记(Tag) | 说明 | 可空 | 格式 | 出现次数 |
---|---|---|---|---|
<head> | 报文头开始 | 1 | ||
<accessCode> | 接入代码 | 否 | 字符1-20位 | 1 |
<businessType> | 业务类型 | 否 | 字符1-20位 | 1 |
<respCode> | 返回代码 | 否 | 字符固定4位 | 1 |
<respDesc> | 返回描述 | 否 | 字符1-128位 | 1 |
</head> | 报文头结束 |
1.2.2.2 响应报文体(respBody)
标记(Tag) | 说明 | 可空 | 格式 | 出现次数 |
---|---|---|---|---|
<body> | 报文体开始 | 1 | ||
<respMsg> | 响应报文体开始 | 1 | ||
…… | 响应报文体具体内容 | |||
</respMsg> | 响应报文体结束 | |||
</body> | 报文体结束 |
二、接入业务类型报文
2.1 GPS报文
2.1.1 GPS服务端报文(TVSS ---> GPS)
业务类型businessType:GPS_CONTROLSENDMSG
2.1.1.1 处理流程
职责划分如下:
客户端(请求服务端Web Service) | 服务端(提供Web Service) |
---|---|
TVSS | Carrier GPS |
正常处理步骤说明如下:
a. TVSS将运作中的车牌号(或车牌号列表),请求Carrier GPS提供的Web Service发送给GPS服务端,开启GPS定位信息跟踪;
b. TVSS将运作完成的车牌号(或车牌号列表),请求Carrier GPS供应商提供的Web Service发送给GPS服务端,关闭GPS定位信息跟踪;
c. 车牌号(或车牌号列表)开启和关闭定位信息可以放在同一个报文中;
异常处理步骤说明如下:
a. TVSS接收到Carrier GPS响应信息中响应代码非“0000”(响应代码请参见附录1);
b. TVSS会对响应消息进行分析处理后,再次请求Carrier GPS提供的Web Service将重新发送车牌号(或车牌号列表)进行开启和关闭,直到成功处理完成。
2.1.1.2 报文
2.1.1.2.1 请求报文
2.1.1.2.1.1 reqMsg标签定义
标记(Tag) | 说明 | 可空 | 格式 | 次数 |
---|---|---|---|---|
<car seq="…"> | 数据项开始 | 1或多次 | ||
<controlType> | controlType控制GPS发送数据或停止发:开始发送数据、停止发送数据 | 否 | 文本 [1,1] | 1 |
<carNo> | 车牌号 | 否 | 文本 [1,1] | 1 |
</car> | 数据项结束 |
(注意:为了减少网络传输等待时间,一次请求报文中car最大seq为1000,多出部分请拆成多个包分批发送。)
系统处理逻辑:
运作中的车辆controlType为1;运作完成的车辆controlType为2。
数据校验逻辑:
由Carrier GPS自己处理,处理逻辑请以文档描述形式告知TVSS。
2.1.1.2.1.2 范例
<?xml version="1.0" encoding="GBK"?>
<tvss>
<head>
<accessCode>sinotrans</accessCode>
<identify>98AB74C0A67C69C6451D2A5419F29835<identify>
<businessType>GPS_CONTROLSENDMSG</businessType>
</head>
<body>
<reqMsg>
<car seq="1">
< controlType >1 </car>
<carNo>京A22346</carNo>
<car>
<car seq="2">
< controlType >2 </car>
<carNo>京B33488</carNo>
<car>
<car seq="3">
< controlType >2 </car>
<carNo>京B33456</carNo>
<car>
<car seq="4">
< controlType >1 </car>
<carNo>京B33459</carNo>
<car>
…
</reqMsg>
<body>
</tvss>
2.1.1.2.2 响应报文
2.1.1.2.2.1 respMsg 标签定义
标记(Tag) | 说明 | 可空 | 格式 | 次数 |
---|---|---|---|---|
<fdbk seq="…"> | 数据项开始 | 标签流水序号seq | 0或多次 | |
<fblc> | 主标签定位 | 否 | 文本 [1,1024] | 1 |
<carNo> | 车牌号 | 否 | 文本 [1,10] | 1 |
<fcer seq="…"> | 内容错误开始 | 标签流水序号seq | 1或多次 | |
<erlc> | 明细字段定位 | 否 | 文本 [1,1024] | 1 |
<errs> | 字段错误描述 | 否 | 文本 [1,1024] | 1 |
</fcer> | 内容错误结束 | |||
</fdbk> | 数据项结束 |
2.1.1.2.2.2 范例
<?xml version="1.0" encoding="GBK"?>
<tvss>
<head>
<accessCode>sinotrans</accessCode>
<businessType>GPS_CONTROLSENDMSG</businessType>
<respCode>3001</respCode>
<respDesc>请求内容存在错误</respDesc>
</head>
<body>
<respMsg>
<fdbk seq="1">
<fblc>car [@seq="2"]</fblc>
<carNo>京B33488</carNo>
<fcer seq="1">
<erlc>carNo<erlc>
<errs>该车未注册<errs>
</fcer>
……
</fdbk>
……
</respMsg>
<body>
</tvss>
2.1.2 GPS定位信息报文(GPS ---> TVSS)
业务类型businessType:GPS_LOCATION
2.1.2.1 处理流程
职责划分如下:
客户端(请求服务端Web Service) | 服务端(提供Web Service) |
---|---|
Carrier GPS | Carrier GPS |
正常处理步骤说明如下:
a. TVSS将运作中的车牌号(或车牌号列表),请求Carrier GPS提供的Web Service发送给GPS服务端;
b. GPS服务端按照指定的频度(次/30秒),请求TVSS提供的Web Service发送相关车牌号(或车牌号列表)的车辆定位信息给TVSS;(要求GPS采样频率不能大于次/30秒。如:GPS采样频率为次/10秒,则GPS服务端通过TVSS提供的Web Service发送过来的记录数为每辆车3条。)
c. TVSS通过提供车辆的GPS信息和收货地的经纬度坐标,并在一定的误差范围内,同时加上预计卸货时间,将运作完成的车牌号(或车牌号列表),通过Carrier GPS供应商提供的Web Service发送给GPS服务端;
d. GPS服务端接收到车牌号(或车牌号列表)之后,停止向TVSS发送相关车牌号(或车牌号列表)的车辆定位信息;
e. 时序图中的1和3步为可选,同时存在或同时都不存在,依赖于系统接口约定。
异常处理步骤说明如下:
a. Carrier GPS接收到TVSS响应信息中响应代码非“0000”(响应代码请参见附录3);
b. Carrier GPS对响应消息进行分析处理后,再次请求TVSS提供的Web Service重新发送车辆定位信息,直到成功处理完成。
2.1.2.2 报文
2.1.2.2.1 请求报文
2.1.2.2.1.1 reqMsg 标签定义
标记(Tag) | 说明 | 可空 | 格式 | 次数 |
---|---|---|---|---|
<gps seq="..."> | 数据项开始 | 标签流水序号seq;整数[1-1000] |
1或多次 | |
<carNo> | 车牌号car no | 否 | 文本 [1,10] | 1 |
<devNo> | 设备号device no | 是 | 文本 [1,20] | 1 |
<devErrCode> | 设备异常代码,请参考附录5,如果设备不支持默认为空 | 是 | 文本 [1,4] | 1 |
<devErrMsg> | 设备异常信息,如果设备不支持默认为空 | 是 | 文本 [1,255] | 1 |
<posTime> | 定位时间:positioning time |
是 | 日期:格式yyyy-MM-dd HH:mm:ss,注意dd和HH之间有一个空格,HH为24制 |
1 |
<lng> | 定位经度longitude | 是 | 数字[0-10000000000000),小数点后15位 | 1 |
<lat> | 定位纬度latitude | 是 | 数字[0-10000000000000),小数点后15位 | 1 |
<speed> | 车速 | 是 | 整数[0-1000000000) | 1 |
<status> | 是否熄火 :0:熄火;1:正常 |
是 | 文本 [1,1] | 1 |
<place> | 定位地点描述 | 是 | 文本 [1,255] | 1 |
</gps > | 数据项结束 |
(注意:为了减少网络传输等待时间,一次请求报文中gps最大seq为1000,多出部分请拆成多个包分批发送。)
系统处理逻辑: 无
数据校验逻辑: 无
2.1.2.2.1.2 范例
<?xml version="1.0" encoding="GBK"?>
<tvss>
<head>
<accessCode>sinotrans</accessCode>
<identify>98AB74C0A67C69C6451D2A5419F29835<identify>
<businessType>GPS_LOCATION</businessType>
</head>
<body>
<reqMsg>
<gps seq="1">
<carNo>沪AR1251</carNo>
<devNo>123456789</devNo>
<devErrCode>0000</devErrCode>
<devErrMsg>正常</devErrMsg>
<posTime>2010-02-23 01:49:00</posTime>
<lng>121.204003906250008</lng>
<lat>31.235437011718798</lat>
<speed>44</speed>
<status>1</status>
<place>上海市青浦区 华徐公路</place>
</gps>
<gps seq="2">
<carNo>冀RE1027</carNo>
<devNo>987654321</devNo>
<devErrCode>0000</devErrCode>
<devErrMsg>正常</devErrMsg>
<posTime>2010-02-23 01:52:00</posTime>
<lng>121.203857421875000</lng>
<lat>31.235404459635397</lat>
<speed>0</speed>
<status>0</status>
<place>上海市奉贤区 庄芦路</place>
</gps>
……
</reqMsg>
<body>
</tvss>
2.1.2.2.2 响应报文
2.1.2.2.2.1 respMsg 标签定义
标记(Tag) | 说明 | 可空 | 格式 | 次数 |
---|---|---|---|---|
<fdbk seq="…"> | 数据项开始 | 标签流水序号seq | 0或多次 | |
<fblc> | 主标签定位 | 否 | 文本 [1,1024] | 1 |
<carNo> | 车牌号 | 否 | 文本 [1,10] | 1 |
<fcer seq="…"> | 内容错误开始 | 标签流水序号seq | 1或多次 | |
<erlc> | 明细字段定位 | 否 | 文本 [1,1024] | 1 |
<errs> | 字段错误描述 | 否 | 文本 [1,1024] | 1 |
</fcer> | 内容错误结束 | |||
</fdbk> | 数据项结束 |
2.1.2.2.2.2 范例
<?xml version="1.0" encoding="GBK"?>
<tvss>
<head>
<accessCode>sinotrans</accessCode>
<businessType>GPS_LOCATION</businessType>
<respCode>3001</respCode>
<respDesc>请求内容存在错误</respDesc>
</head>
<body>
<respMsg>
<fdbk seq="1">
<fblc>gps [@seq="2"]</fblc>
<carNo>冀RE1027</carNo>
<fcer seq="1">
<erlc>devErrCode<erlc>
<errs>设备代码错误<errs>
</fcer>
……
</fdbk>
……
</respMsg>
<body>
</tvss>
2.1.3 GPS门磁开关信息报文(GPS ---> TVSS)
业务类型businessType:GPS_LOCK
2.1.3.1 处理流程
职责划分如下:
客户端(请求服务端Web Service) | 服务端(提供Web Service) |
---|---|
Carrier GPS | TVSS |
正常处理步骤说明如下:
a. Carrier管理提供运输服务的车辆列表;
b. 当Carrier车辆列表里的车辆门磁开关状态发生改变时,Carrier GPS自动请求TVSS提供的Web Service发送车辆门磁开关信息给TVSS;
异常处理步骤说明如下:
a. Carrier GPS接收到TVSS响应信息中响应代码非“0000”(响应代码请参见附录3);
b. Carrier GPS对响应消息进行分析处理后,再次请求TVSS提供的Web Service重新发送车辆门磁开关信息,直到成功处理完成。
2.1.3.2 报文
2.1.3.2.1 请求报文
2.1.3.2.1.1 reqMsg 标签定义
标记(Tag) | 说明 | 可空 | 格式 | 次数 |
---|---|---|---|---|
<lock seq="…"> | 数据项开始 |
|
标签流水序号seq;整数[1-1000] | 1或多次 |
<carNo> | 车牌号car no | 否 | 文本 [1,10] | 1 |
<msNo> | 门磁开关:Magnetic Switch |
是 | 文本 [1,20] | 1 |
<devErrCode> | 设备异常代码,请参考附录5,如果设备不支持默认为空 | 是 | 文本 [1,4] | 1 |
<devErrMsg> | 设备异常信,如果设备不支持默认为空 | 是 | 文本 [1,255] | 1 |
<posTime> | 定位时间:positioning time |
是 | 日期:格式yyyy-MM-dd HH:mm:ss,注意dd和HH之间有一个空格,HH为24制 |
1 |
<status> | 车门开关状态 :0:关;1:开 |
是 | 文本 [1,1] | 1 |
</lock > | 数据项结束 |
(注意:为了减少网络传输等待时间,一次请求报文中lock最大seq为1000,多出部分请拆成多个包分批发送。)
系统处理逻辑: 无
数据校验逻辑: 无
2.1.3.2.1.2 范例
<?xml version="1.0" encoding="GBK"?>
<tvss>
<head>
<accessCode>sinotrans</accessCode>
<identify>98AB74C0A67C69C6451D2A5419F29835<identify>
<businessType>GPS_LOCK</businessType>
</head>
<body>
<reqMsg>
<lock seq="1">
<carNo>沪AR1251</carNo>
<msNo>10001</msNo>
<devErrCode>0000</devErrCode>
<devErrMsg>正常</devErrMsg>
<posTime>2010-02-23 01:49:00</posTime>
<status>1</status>
</lock>
<lock seq="2">
<carNo>冀RE1027</carNo>
<msNo>10002</msNo>
<devErrCode>0000</devErrCode>
<devErrMsg>正常</devErrMsg>
<posTime>2010-02-23 01:52:00</posTime>
<status>0</status>
</lock>
……
</reqMsg>
<body>
</tvss>
2.1.3.2.2 响应报文
2.1.3.2.2.1 respMsg 标签定义
标记(Tag) | 说明 | 可空 | 格式 | 次数 |
---|---|---|---|---|
<fdbk seq="…"> | 数据项开始 | 标签流水序号seq | 0或多次 | |
<fblc> | 主标签定位 | 否 | 文本 [1,1024] | 1 |
<carNo> | 车牌号 | 否 | 文本 [1,10] | 1 |
<fcer seq="…"> | 内容错误开始 | 标签流水序号seq | 1或多次 | |
<erlc> | 明细字段定位 | 否 | 文本 [1,1024] | 1 |
<errs> | 字段错误描述 | 否 | 文本 [1,1024] | 1 |
</fcer> | 内容错误结束 | |||
</fdbk> | 数据项结束 |
2.1.3.2.2.2 范例
<?xml version="1.0" encoding="GBK"?>
<tvss>
<head>
<accessCode>sinotrans</accessCode>
<businessType>GPS_LOCK</businessType>
<respCode>3001</respCode>
<respDesc>请求内容存在错误</respDesc>
</head>
<body>
<respMsg>
<fdbk seq="1">
<fblc>lock [@seq="1"]</fblc>
<carNo>沪AR1251</carNo>
<fcer seq="1">
<erlc>devErrCode<erlc>
<errs>设备代码错误<errs>
</fcer>
……
</fdbk>
……
</respMsg>
<body>
</tvss>
2.1.3.2.3 响应报文
2.1.3.2.3.1 respMsg标签定义
标记(Tag) | 说明 | 可空 | 格式 | 次数 |
---|---|---|---|---|
<fdbk seq="…"> | 数据项开始 | 标签流水序号seq | 0或多次 | |
<fblc> | 主标签定位 | 否 | 文本 [1,1024] | 1 |
<deliveryNo> | 交货号 | 否 | 文本 [1,20] | 1 |
<fcer seq="…"> | 内容错误开始 | 标签流水序号seq | ||
<erlc> | 明细字段定位 | 否 | 文本 [1,1024] | 1 |
<errs> | 字段错误描述 | 否 | 文本 [1,1024] | 1 |
</fcer> | 内容错误结束 | |||
</fdbk> | 数据项结束 |
2.1.3.2.3.2 范例
<?xml version="1.0" encoding="GBK"?>
<tvss>
<head>
<accessCode>sinotrans</accessCode>
<businessType>TMS001</businessType>
<respCode>3001</respCode>
<respDesc>请求内容存在错误</respDesc>
</head>
<body>
<respMsg>
<fdbk seq="1">
<fblc> tdn [@seq="1"]</fblc>
<deliveryNo>76816327</deliveryNo>
<fcer seq="1">
<erlc>deliveryDate<erlc>
<errs>交货日期格式错误<errs>
</fcer>
<fcer seq="2">
<erlc>sku[@seq="2"]/quantity<erlc>
<errs>数量不允许小于0<errs>
</fcer>
……
</fdbk>
……
</respMsg>
<body>
</tvss>
代码 | 描述 |
---|---|
0000 | 处理成功 |
1001 | 接入代码错误 |
1002 | 标识符错误 |
1003 | 业务类型不支持 |
1004 | 请求报文数据格式有误 |
9999 | 其它错误 |
代码 | 描述 |
---|---|
0000 | 处理成功 |
1001 | 请求报文XML不合法 |
1002 | 请求报文XML校验错误(如:DTD或Schema校验不通过) |
2001 | 接入代码错误 |
2002 | 标识符错误 |
2003 | 业务类型不支持 |
3001 | 请求内容存在错误 |
9999 | 其它错误(注意:为该类错误代码时请反馈具体的错误描述) |
(注意:只有响应代码为“3001”时,响应报文<respMsg>标签才允许放入内容,其它响应代码响应报文<respMsg>放入空内容。)
代码 | 描述 |
---|---|
0000 | 正常 |
0001 | 断电 |