我的问题是关于ONVIF规范。 http://www.onvif.org/imwp/download.asp?ContentID=18006 在第5.10节中,它说:
服务是相关端口的集合。本规范不强制要求任何服务命名原则。
假设我有NVT的IP地址(例如网络视频发射器,如IP摄像机),我该如何形成设备管理网络服务的地址?这项服务是整个系统的切入点。
谢谢。
答案 0 :(得分:4)
根据official document(第5.1.1节),您可以http://<IP address>/onvif/device_service
答案 1 :(得分:2)
你必须在onvif xsdl文件中添加服务(比如http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl)
<wsdl:definitions ......>
..............
</wsdl:binding>
<!--===============================-->
<wsdl:service name="DeviceService">
<wsdl:port name="DevicePort" binding="tds:DeviceBinding">
<soap:address location="http://ip/onvif/device_service"/>
</wsdl:port>
</wsdl:service>
</wsdl:definitions>
并生成ws客户端源代码 (对于java可以使用wsimport)
如上所述,webservice的入口点为http://ip/onvif/device_service
答案 2 :(得分:0)
Şafak指出的惯例在ONVIF标准中有所描述。但在现实生活中,一些设备并没有遵循它。在这种情况下,您尝试发送单播ws-discovery Probe请求(或多播,然后通过ip-address过滤ProbeMatch回复),ProbeMatch应答中的XAddrs字段将包含设备服务所需的地址。
答案 3 :(得分:0)
请注意在*http://IP/onvif/device_service*
网址的任何地方使用它来获取服务。根据GetServices的要求:
<env:Body>
<tds:GetServicesResponse>
<tds:Service>
<tds:Namespace>http://www.onvif.org/ver10/device/wsdl</tds:Namespace>
<tds:XAddr>http://IP/onvif/device_service</tds:XAddr>
<tds:Version>
<tt:Major>2</tt:Major>
<tt:Minor>10</tt:Minor>
</tds:Version>
</tds:Service>
<tds:Service>
<tds:Namespace>http://www.onvif.org/ver10/media/wsdl</tds:Namespace>
<tds:XAddr>http://IP/onvif/Media</tds:XAddr>
<tds:Version>
<tt:Major>2</tt:Major>
<tt:Minor>10</tt:Minor>
</tds:Version>
</tds:Service>
<tds:Service>
<tds:Namespace>http://www.onvif.org/ver10/events/wsdl</tds:Namespace>
<tds:XAddr>http://IP/onvif/Events</tds:XAddr>
<tds:Version>
<tt:Major>2</tt:Major>
<tt:Minor>10</tt:Minor>
</tds:Version>
</tds:Service>
<tds:Service>
<tds:Namespace>http://www.onvif.org/ver20/ptz/wsdl</tds:Namespace>
<tds:XAddr>http://IP/onvif/PTZ</tds:XAddr>
<tds:Version>
<tt:Major>2</tt:Major>
<tt:Minor>10</tt:Minor>
</tds:Version>
</tds:Service>
<tds:Service>
<tds:Namespace>http://www.onvif.org/ver20/imaging/wsdl</tds:Namespace>
<tds:XAddr>http://IP/onvif/Imaging</tds:XAddr>
<tds:Version>
<tt:Major>2</tt:Major>
<tt:Minor>10</tt:Minor>
</tds:Version>
</tds:Service>
<tds:Service>
<tds:Namespace>http://www.onvif.org/ver10/deviceIO/wsdl</tds:Namespace>
<tds:XAddr>http://IP/onvif/DeviceIO</tds:XAddr>
<tds:Version>
<tt:Major>2</tt:Major>
<tt:Minor>10</tt:Minor>
</tds:Version>
</tds:Service>
<tds:Service>
<tds:Namespace>http://www.onvif.org/ver20/analytics/wsdl</tds:Namespace>
<tds:XAddr>http://IP/onvif/Analytics</tds:XAddr>
<tds:Version>
<tt:Major>2</tt:Major>
<tt:Minor>10</tt:Minor>
</tds:Version>
</tds:Service>
</tds:GetServicesResponse>
</env:Body>
您可以在不同的网址上使用不同的服务。
在其中一台HikVision相机上可以看到这一点。他们中的大多数使用*http://IP/onvif/device_service*
。
答案 4 :(得分:0)
实际上,通过WS-Discovery,您只能获得设备服务的地址。您必须使用DeviceService获取的其他服务的地址:GetServices请求,它使用您之前使用WS-Discovery获得的地址100%工作。