前两篇blog介绍了国网B接口注册和资源上报相关,今天继续整理国网B接口资源信息获取相关的接口描述和消息示例。
国网B接口设备接入端注册成功后的上报系统资源(Push_Resourse)和GB28181的Catalog相比,还有些差别,Push_Resourse是接入端主动上报,Request_Resource则是国网B接口平台端向前端系统发起请求资源信息。前端系统返回200 OK,并携带前端系统的资源信息。
由于大牛直播SDK老早就实现了GB28181 Android端设备接入,再对接国网B接口,基本就是轻车熟路了。
接口描述
相关协议规范原文如下:资源信息获取属于数据接口,采用 SIP 的会话外MESSAGE方法,消息体应采用 XML 进行封装。
获取前端设备的资源信息时应采用逐级获取的方式。
前端设备资源较多时,可由平台用户控制发起多次查询,每一次查询均有一次 MESSAGE 请求和对应的一次响应,建议每次回应的数据包组合成小于 MTU 尺寸。
资源信息获取接口流程
主要功能流程如下:
a) F1:用户向前端系统首次请求资源信息。
b) F2:前端系统返回 200 OK,携带前端系统的资源信息。
c) F3:用户向前端系统第二次请求资源信息。
d) F4:前端系统返回 200 OK,携带前端系统的资源信息。
重要的SIP头字段如下:
SIP响应返回码如下:
XML Schema 参数定义如下:
响应的 XML Schema 参数定义如下:
消息示例
请求获取资源:
代码语言:javascript
复制
MESSAGE sip:前端系统地址编码@前端系统所属平台域名或IP地址 SIP/2.0
From: <sip: 用户地址编码@用户所属平台域名或IP地址>;tag=f2161243
To: <sip:前端系统址编码@前端系统所属平台域名或IP地址>
Contact: <sip: 用户地址编码@用户所属平台域名或IP地址>
Call-ID: c47a42
Via: SIP/2.0/UDP 用户所属平台IP地址;branch=z9hG4bK
CSeq: 1 MESSAGE
Content-type: application/xml
Content-Length: 消息体的长度
<?xml versinotallow="1.0" encoding=”UTF-8”?>
<SIP_XML EventType=Request_Resource>
<!--前端系统、场地、前端设备的地址编码-->
<Item Code=”地址编码” FromIndex=”期望返回的起始记录数” ToIndex=”期望返回的结束记录数”/>
</SIP_XML>
响应消息:
代码语言:javascript
复制
SIP/2.0 200 OK
From: <sip:用户地址编码@用户所属平台域名或IP地址>;tag=f2161243
To: <sip:前端系统地址编码@前端系统所属平台域名或IP地址>
Contact: <sip:用户地址编码@用户所属平台域名或IP地址>
Call-ID: c47a42
Via: SIP/2.0/UDP 用户所属平台的IP地址;branch=z9hG4bK
CSeq: 1 MESSAGE
Content-type: application/xml
Content-Length: 消息体的长度
<?xml versinotallow="1.0" encoding="UTF-8"?>
<SIP_XML EventType=Response_Resource>
<SubList Code=”父节点地址编码” RealNum=”实际包含节点数” SubNum=”实际返回节点数” FromIndex=”起始节点数” ToIndex=”结束节点数”>
<!-- 场地、前端设备、摄像机的地址编码 -->
<Item Code=”地址编码” Name=”名称” Status=”节点状态值” DecoderTag=”解码插件标签” Longitude=”经度值” Latitude=”纬度值” SubNum=”包含的字节点数目”/>
<Item Code=”地址编码” Name=”名称” Status=”节点状态值” DecoderTag=”解码插件标签” Longitude=”经度值” Latitude=”纬度值” SubNum=”包含的字节点数目”/>
</SubList>
</SIP_XML>
以上是国网B接口资源信息获取(Request_Resource)接口描述和消息示例,感兴趣的开发者,可以查看相关规范,如果有条件的话,wireshark抓包看看,流程一目了然。