2014-03-04 114 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