5

我的问题是关于 ONVIF 规范的。 http://www.onvif.org/imwp/download.asp?ContentID=18006 在第 5.10 节中,它说:

服务是相关端口的集合。本规范不强制要求任何服务命名原则。

假设我有一个 NVT(例如网络视频传输器,如 IP 摄像机)的 IP 地址,我如何形成设备管理 Web 服务的地址?该服务是整个系统的入口点。

谢谢你。

4

5 回答 5

5

根据官方文档(第 5.1.1 节),您可以在以下位置访问该服务http://<IP address>/onvif/device_service

于 2011-01-04T11:12:45.687 回答
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

于 2011-01-13T16:00:11.410 回答
0

Şafak 指出的约定在 ONVIF 标准中进行了描述。但在现实生活中,一些设备并没有遵循它。在这种情况下,您尝试发送单播 ws-discovery 探测请求(或多播,然后按 IP 地址过滤 ProbeMatch 回复),ProbeMatch 回复中的 XAddrs 字段将包含设备服务所需的地址。

于 2011-03-01T13:39:32.483 回答
0

请注意在任何地方使用*http://IP/onvif/device_service*URL 来访问服务。根据 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>

您可以在不同的 url 上提供不同的服务。这已在其中一台海康威视摄像机上看到。他们中的大多数使用*http://IP/onvif/device_service*.

于 2014-07-21T14:07:15.377 回答
0

实际上通过 WS-Discovery 只能获取设备服务的地址。您必须通过 DeviceService:GetServices 请求获得的其他服务的地址,该请求与您之前通过 WS-Discovery 获得的地址 100% 有效。

于 2014-08-15T18:37:40.550 回答