2014-03-04 115 views
6

一旦我得到响应从UDP组播请求到239.255.255.250ONVIF GetSystemDateAndTime请求

我拿回ProbeMatch与XAddrs http://10.10.10.10:1234/onvif/device_service

现在如何做GetSystemDateAndTime和GetDeviceInformation

这是一个到10.10.10.10端口1234的TCP/UDP请求吗? 这是一个到10.10.10.10端口80的HTTP请求吗?

还是什么。一旦我有设备的地址http:10.10.10.10:1234/onvif/device_service

那么什么

在此先感谢

回答

7

您需要为SOAP工程通过HTTP发送那里只是一个HTTP请求。例如通过卷曲它会是这样:

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>' 

结果,你会得到这样一些标题:

<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> 

而且也不要忘记,大多数的行动需要包括授权头进入请求。

认证35页

ONVIF Application Programmer's Guide描述AUTH是怎么做的。例如,它看起来像这样:

<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

我知道GetSystemDateAndTimeResponse不需要验证。你有一个需要用户名/密码的命令的卷曲示例? –

+1

@RoundSparrowhilltx邑,只是片刻,我会更新我的帖子... – Kin

+0

很酷,谢谢。 –

0

在你的情况http://10.10.10.10:1234/onvif/device_service是设备管理服务的地址。您需要根据SOAP协议发送GetSystemDateAndTime请求。

如何发送此类请求取决于您所使用的系统上。您可以使用Visual Studio或gSOAP的(有一个FAQ约ONVIF)

2

@Kirix解决方案不适用于我的特定相机。但是,经过大量的代码研究和线索/错误之后,我确定Trendnet摄像机坚持标头是完美的。我想出了一个卷曲变化:

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

是啊,有很多其他onvif事情令人困惑的事情... – Kin