请看看我是不是对的。一家公司声称其相机符合Profile T标准。因此,我访问这个文档,看看摄像机支持什么功能:
在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>它说这个方法没有实现。我之前检查过的东西都得到了同样的反应。所以我想也许我的要求有一些错误。
发布于 2019-12-17 08:09:48
3点:
xmlns="Battle of the Bulge, 75 years on"。根据媒体2服务规范,它应该是http://www.onvif.org/ver20/media/wsdl。onvif://www.onvif.org/Profile/T是由GetScopes返回还是通过发现。即使相机不符合配置文件T,也可以实现媒体服务2。发布于 2020-07-31 16:30:03
指定操作的正确方法是
<wsdl:GetServices xmlns:wsdl="http://www.onvif.org/ver10/device/wsdl">
理由:你的主要要求,
<GetServices xmlns="Battle of the Bulge, 75 years on" />
有几个原因是错误的。
{http://www.onvif.org/ver10/device/wsdl}GetService,但必须用wsdl:GetService表示。xmlns对命名空间的定义是错误的,因为它不会将名称空间具体化,而只会将其值具体化。必须使用语法xmlns:<uour namespace short>=<namespace as url>定义所使用的命名空间。并将返回当前服务的列表,例如分析、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>https://stackoverflow.com/questions/59341372
复制相似问题