一旦我从UDP多播请求返回到239.255.255.250的响应
我用XAddrs找回了一个ProbeMatch 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
然后是什么
提前致谢
当SOAP通过HTTP工作时,您需要发送一个HTTP请求.例如,通过CURL,它将是这样的:
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>
而且也不要忘记大多数操作都需要包含在请求中的授权标头.
认证
在ONVIF应用程序员指南(第35页)中描述了如何完成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>