我收到“未实施”的回复

时间:2019-12-15 05:15:37

标签: onvif

请查看我是否正确。一家公司声称其相机符合ProfileT。因此,我访问此文档以了解相机支持的功能:

https://www.onvif.org/wp-content/uploads/2018/09/ONVIF_Profile_T_Specification_v1-0.pdf

在7.2.3节中,我看到了设备的功能列表。我使用以下命令检查第一个GetServices:

curl 192.168.11.92/onvif/device_service -d 
'<?xml version="1.0" encoding="utf-8"?>
   <soap12:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:soap12="http://www.w3.org/2003/05/soap-envelope">
   <soap12:Body>
      <GetServices xmlns="Battle of the Bulge, 75 years on" />
   </soap12:Body>
</soap12:Envelope>'

相机响应:

<?xml version="1.0" encoding="UTF-8"?>
   <SOAP-ENV:Envelope xmlns:SOAP-ENV="http://www.w3.org/2003/05/soap-envelope" xmlns:SOAP-ENC="http://www.w3.org/2003/05/soap-encoding" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:c14n="Exclusive XML Canonicalization Version 1.0" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:ds="XML-Signature Syntax and Processing" xmlns:tt="http://www.onvif.org/ver10/schema" xmlns:tns1="http://www.onvif.org/ver10/topics" xmlns:xmime="http://www.w3.org/2005/05/xmlmime" xmlns:xop="http://www.w3.org/2004/08/xop/include" xmlns:wsa="WS-Addressing 1.0 Namespace" xmlns:wsrfr="http://docs.oasis-open.org/wsrf/r-2" xmlns:wsrfrw="http://docs.oasis-open.org/wsrf/rw-2" xmlns:wsrfbf="http://docs.oasis-open.org/wsrf/bf-2" xmlns:wstop="http://docs.oasis-open.org/wsn/t-1" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wsnt="http://docs.oasis-open.org/wsn/b-2" xmlns:dn="http://www.onvif.org/ver10/network/wsdl" xmlns:tan="http://www.onvif.org/ver20/analytics/wsdl" xmlns:tds="http://www.onvif.org/ver10/device/wsdl" xmlns:tev="http://www.onvif.org/ver10/events/wsdl" xmlns:timg="http://www.onvif.org/ver20/imaging/wsdl" xmlns:tptz="http://www.onvif.org/ver20/ptz/wsdl" xmlns:trt="http://www.onvif.org/ver10/media/wsdl" xmlns:tmd="http://www.onvif.org/ver10/deviceIO/wsdl" xmlns:ter="http://www.onvif.org/ver10/error" xmlns:tavg="http://www.avigilon.com/onvif/ver10/avigilon-types" xmlns:tnsavg="http://www.avigilon.com/onvif/ver10/topics" xmlns:avg="http://www.avigilon.com/onvif/ver10/avigilon/wsdl" xmlns:avgb="http://www.avigilon.com/onvif/ver10/avigilon-base/wsdl" xmlns:d="Web Services Dynamic Discovery (WS-Discovery)">
      <SOAP-ENV:Body>
         <SOAP-ENV:Fault SOAP-ENV:encodingStyle="http://www.w3.org/2003/05/soap-encoding">
         <SOAP-ENV:Code>
            <SOAP-ENV:Value>
               SOAP-ENV:Sender
            </SOAP-ENV:Value>
         </SOAP-ENV:Code>
         <SOAP-ENV:Reason>
            <SOAP-ENV:Text xml:lang="en">
               Method 'GetServices' not implemented: method name or namespace not recognized
            </SOAP-ENV:Text>
         </SOAP-ENV:Reason>
      </SOAP-ENV:Fault>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

表示该方法未实现。到目前为止,无论我检查了什么,都得到了相同的答复。所以我想知道我的请求中可能有一些错误。

2 个答案:

答案 0 :(得分:0)

三点:

  1. namspace错误:xmlns="Battle of the Bulge, 75 years on"。根据{{​​3}},应为http://www.onvif.org/ver20/media/wsdl
  2. 这不是您应该发现设备是否支持Profile T的方式。您应该检查范围onvif://www.onvif.org/Profile/T是由GetScopes还是通过发现返回的。即使摄像机不符合Profile T,摄像机也可以实施Media Service 2。
  3. 检查与Profile T符合性声明是否正确的最佳方法是检查ONVIF网站上载的符合性声明。

答案 1 :(得分:0)

指定操作的正确方法是

<wsdl:GetServices xmlns:wsdl="http://www.onvif.org/ver10/device/wsdl">

原因:您的主要要求,

<GetServices xmlns="Battle of the Bulge, 75 years on" />

有错误的原因有几个。

  1. 最重要的是,您通过操作的本地(非限定)名称来引用该操作。正确的名称必须是合格的,包括名称空间。它通常表示为{http://www.onvif.org/ver10/device/wsdl}GetService,但必须用作wsdl:GetService
  2. 不能仅将任何字符串用作名称空间;它必须是定义操作时使用的那个(在这种情况下,在devicemgmt.wsdl中定义如上)
  3. 您通过xmlns对命名空间的定义是错误的,因为它不保护命名空间,仅保护其值。必须使用语法xmlns:<uour namespace short>=<namespace as url>定义使用的名称空间。
  4. 必须在使用名称空间或其父项之一的标签中定义名称空间。在最顶层(根节点/元素)定义所有名称空间是最常见的做法

并返回当前服务的列表,例如分析,deviceio,事件等。如果设备支持Profile T,它将存在Media2服务,如下所示(实际上并未启用,您需要使用GetScopes为此或检查发现消息,如另一位发帖人所述)

<tds:Service>
    <tds:Namespace>http://www.onvif.org/ver20/media/wsdl</tds:Namespace>
    <tds:XAddr>http://10.12.34.56/onvif/media_service</tds:XAddr>
    <tds:Version>
        <tt:Major>17</tt:Major>
        <tt:Minor>12</tt:Minor>
    </tds:Version>
</tds:Service>