2014-03-04 3 views
6

Sobald ich eine Antwort von der UDP-Multicast-Anfrage an 239.255.255.250ONVIF GetSystemDateAndTime Anfrage

bekommen bekomme ich wieder eine ProbeMatch mit einem XAddrs http://10.10.10.10:1234/onvif/device_service

Wie mache ich jetzt den GetSystemDateAndTime und GetDeviceInformation

Ist dies eine TCP/UDP-Anfrage an 10.10.10.10 Port 1234? Ist dies eine HTTP-Anfrage an 10.10.10.10 Port 80?

oder was Sobald ich das Gerät die Adresse http:10.10.10.10:1234/onvif/device_service

was dann

Vielen Dank im Voraus

Antwort

7

Sie müssen dort nur eine HTTP-Anfrage senden, da SOAP über HTTP arbeitet. Zum Beispiel über CURL würde es so aussehen:

curl 10.10.10.10:1234/onvif/device_service -d '<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"><s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><GetSystemDateAndTime xmlns="http://www.onvif.org/ver10/device/wsdl"/></s:Body></s:Envelope>' 

Als Ergebnis erhalten Sie so etwas wie dies mit einigen Header bekommen: inklusive

<tds:GetSystemDateAndTimeResponse> 
    <tds:SystemDateAndTime> 
     <tt:DateTimeType>Manual</tt:DateTimeType> 
     <tt:DaylightSavings>false</tt:DaylightSavings> 
     <tt:TimeZone> 
      <tt:TZ>MoroccoStandardTime0</tt:TZ> 
     </tt:TimeZone> 
     <tt:UTCDateTime> 
      <tt:Time> 
       <tt:Hour>10</tt:Hour> 
       <tt:Minute>5</tt:Minute> 
       <tt:Second>35</tt:Second> 
      </tt:Time> 
      <tt:Date> 
       <tt:Year>2014</tt:Year> 
       <tt:Month>3</tt:Month> 
       <tt:Day>14</tt:Day> 
      </tt:Date> 
     </tt:UTCDateTime> 
    </tds:SystemDateAndTime> 
</tds:GetSystemDateAndTimeResponse> 

Und auch vergessen Sie nicht, dass die meisten der Aktionen erfordert Genehmigung Header in die Anfrage.

AUTHENTICATION

In ONVIF Application Programmer's Guide auf Seite 35 beschrieben, wie Auth gemacht wird. Zum Beispiel sieht es so aus:

<s:Header> 
    <Security s:mustUnderstand="1" xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> 
     <UsernameToken> 
      <Username>admin</Username> 
      <Password Type="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-username-token-profile-1.0#PasswordDigest">MuMnyh3wTxGWOCc=</Password> 
      <Nonce EncodingType="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-soap-message-security-1.0#Base64Binary">8Qqve9KCkNhQAAAAAAA==</Nonce> 
      <Created xmlns="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd">2014-03-04T14:03:05.130Z</Created> 
     </UsernameToken> 
    </Security> 
</s:Header> 
+0

Ich weiß, dass GetSystemDateAndTimeResponse keine Authentifizierung erfordert. Sie haben ein Curl-Beispiel für einen Befehl, der Benutzername/Passwort erfordert? –

+1

@RoundSparrowhilltx yap, nur einen Moment, ich werde meine Post aktualisieren ... – Kin

+0

Cool, danke. –

0

In Ihrem Fall http://10.10.10.10:1234/onvif/device_service ist die Adresse des Geräteverwaltungsdienst. Sie müssen eine GetSystemDateAndTime Anfrage gemäß dem SOAP-Protokoll senden.

Das Senden solcher Anfragen hängt vom System ab, an dem Sie arbeiten. Sie können Visual Studio oder gsoap verwenden (es gibt eine FAQ über ONVIF)

2

@Kirix Lösung funktionierte nicht für meine bestimmte Kamera. Aber nach einer großen Menge an Code-Studium und Trail/Fehler .. Ich festgestellt, dass die Trendnet-Kamera habe ich darauf bestanden, dass der Header perfekt ist. Ich habe herausgefunden, eine Curl-Variation:

curl http://192.168.xxx.xxx/onvif/device_service --data '<s:Envelope xmlns:s="http://www.w3.org/2003/05/soap-envelope"><s:Body xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"><GetSystemDateAndTime xmlns="http://www.onvif.org/ver10/device/wsdl"/></s:Body></s:Envelope>' --header 'Content-Type: application/soap+xml; charset=utf-8; action="http://www.onvif.org/ver10/device/wsdl/GetSystemDateAndTime";' 
+0

Ja, es gibt eine Menge anderer verwirrende Dinge mit dieser Onvif Sache ... – Kin

Verwandte Themen