Я получаю ответ «не реализовано»

Пожалуйста, посмотрите, прав ли я. Компания утверждает, что ее камеры соответствуют стандарту Profile T. Поэтому я просматриваю этот документ, чтобы узнать, какие функции поддерживают камеры:

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>

Пишет, что метод не реализован. Все, что я исследовал до сих пор, получило один и тот же ответ. Поэтому мне интересно, может быть, у меня есть какие-то ошибки в моих запросах.


person hamidi    schedule 15.12.2019    source источник


Ответы (2)


Три пункта:

  1. Неверное пространство имен: xmlns="Battle of the Bulge, 75 years on". Согласно спецификациям службы Media 2, это должно быть http://www.onvif.org/ver20/media/wsdl.
  2. Это не тот способ, которым вы должны определить, поддерживает ли устройство профиль T. Вы должны проверить, возвращается ли область onvif://www.onvif.org/Profile/T с помощью GetScopes или путем обнаружения. Камера может реализовать Media Service 2, даже если она не совместима с профилем T.
  3. Лучший способ проверить правильность заявления о соответствии профилю T — это проверить Декларацию о соответствии, загружаемую на веб-сайт ONVIF.
person Ottavio Campana    schedule 17.12.2019
comment
Спасибо за ответ. Сменил баттл... на то что вы сказали и ответ тот же. Я изменил имя веб-службы на GetScopes и все равно получаю тот же ответ. Может тоже не реализовано? Кстати, у меня могут быть некоторые ошибки в мыслях и команде, потому что я новичок в керле, как и в Onvif. Так что, пожалуйста, поправьте меня, если я где-то ошибаюсь. Спасибо - person hamidi; 17.12.2019
comment
GetScopes относится к службе управления устройствами, а не к Media 2. ONVIF состоит из разных служб, каждая служба имеет собственное пространство имен. - person Ottavio Campana; 17.12.2019

Правильный способ указать операцию

<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. Пространство имен должно быть определено в теге, где оно используется, или в одном из его родителей. Чаще всего все пространства имен определяются на самом верхнем уровне (корневой узел/элемент).

и вернет список имеющихся служб, таких как аналитика, устройство, событие и т. д. Если устройство поддерживает профиль 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>
person Daniel B    schedule 31.07.2020