2012-05-29 97 views
4

我正在製作一個c#windows應用程序,它使用開源庫Onvif收集連接到我的網絡的設備。如何使用Onvif庫c#獲取設備信息?

我正在這樣做。

ServicePointManager.Expect100Continue = false; 
    var endPointAddress = new EndpointAddress("http://ip_address:port/onvif/device_service"); 
    var httpBinding = new HttpTransportBindingElement();    
    var bind = new CustomBinding(httpBinding); 
    var temp = new DeviceClient(bind, endPointAddress); 
    var request = new GetDeviceInformationRequest(); 
    var response = temp.GetDeviceInformation(request); ////// Error Here described bellow 
    string firm = response.FirmwareVersion; 
    string manu = response.Manufacturer; 
    string serial = response.SerialNumber; 
    string model = response.Model; 

錯誤消息::有沒有終點在http聽://東西:端口/ ONVIF/device_service是可以接受message.this通常是由不正確的地址或SOAP行動

可以引起任何一個幫助我?

我想我沒有與服務器正確連接,是這樣嗎? 如果是的話怎麼解決呢?

+1

你使用哪種開源的Onvif庫? – Grifo

+0

「Hello:」或「ProbeMatch」數據包中返回的ListenURI是「http:// ip_address:port/onvif/device_service」嗎?並非所有NVT都在「.../onvif/device_service」上偵聽。這是URL的用途,但確切的文本不是必需的。 –

+0

另外,您可能需要通知您綁定NVT所需的憑據。 –

回答

2

也許WS-DISCOVERY會給你額外的信息。我會盡量不要在相機的IP之後使用任何端口。

當測試發送一個UDP多播地址239.255.255.250,端口3702(WS-發現),這是相機的答案:

<?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:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:d="http://schemas.xmlsoap.org/ws/2005/04/discovery" xmlns:dn="http://www.onvif.org/ver10/network/wsdl"> 
    <SOAP-ENV:Header> 
    <wsa:MessageID>uuid:cb3dea50-aa60-11e1-88b9-00408cb972aa</wsa:MessageID> 
    <wsa:RelatesTo>uuid:5bca11ff-61b8-4d07-8a26-90274ad51db8</wsa:RelatesTo> 
    <wsa:To SOAP-ENV:mustUnderstand="true">http://schemas.xmlsoap.org/ws/2004/08/addressing/role/anonymous</wsa:To> 
    <wsa:Action SOAP-ENV:mustUnderstand="true">http://schemas.xmlsoap.org/ws/2005/04/discovery/ProbeMatches</wsa:Action> 
    <d:AppSequence SOAP-ENV:mustUnderstand="true" MessageNumber="1" InstanceId="1338367479"></d:AppSequence> 
    </SOAP-ENV:Header> 
    <SOAP-ENV:Body> 
    <d:ProbeMatches> 
     <d:ProbeMatch> 
     <wsa:EndpointReference> 
      <wsa:Address>urn:uuid:65a142fc-a41e-11e1-9cc8-00408cb972aa</wsa:Address> 
     </wsa:EndpointReference> 
     <d:Types>dn:NetworkVideoTransmitter</d:Types> 
     <d:Scopes> 
      onvif://www.onvif.org/type/video_encoder 
      onvif://www.onvif.org/type/ptz 
      onvif://www.onvif.org/hardware/P5534-E 
      onvif://www.onvif.org/name/AXIS%20P5534-E 
      onvif://www.onvif.org/location/ 
     </d:Scopes> 
     <d:XAddrs> 
      h##p://zeroconfIP/onvif/device_service 
      h##p://unicastIP/onvif/device_service 
     </d:XAddrs> 
     <d:MetadataVersion>1</d:MetadataVersion> 
     </d:ProbeMatch> 
    </d:ProbeMatches> 
    </SOAP-ENV:Body> 
</SOAP-ENV:Envelope> 

嘗試發現響應,並查看是否有任何XAddrs是不是您所期望的默認值。

+0

::是的,我已經嘗試了ODM,但它也返回我在這裏提到的同樣的錯誤。 –

+0

對不起,請求必須發送到device_service。 –

+0

尤其是,device_service的XAddr對於所有NVT中的99%將是....../onvif/device_service,但它可能由任何東西引起。它應該檢查ProbeMatch(或Hello)並使用它,而不是用代碼計算它。根據你上面的評論,我認爲你的NVT總是選擇.../onvif/device_service。嘗試將該URL粘貼到瀏覽器中。你應該看到一個理智的迴應。也可以嘗試使用SoapUI來驗證您的NVT運行正常。 –

0

上ONVIF獲得性能Foscam FI9805E皁響應

-

-

-<tds:GetCapabilitiesResponse> 


    -<tds:Capabilities xsi:type="tt:Capabilities"> 


    -<tt:Analytics xsi:type="tt:AnalyticsCapabilities"> 

     <tt:XAddr>http://192.168.1.210:8888/onvif/device_service</tt:XAddr> 

     <tt:RuleSupport>true</tt:RuleSupport> 

     <tt:AnalyticsModuleSupport>true</tt:AnalyticsModuleSupport> 

    </tt:Analytics> 


    -<tt:Device xsi:type="tt:DeviceCapabilities"> 

     <tt:XAddr>http://192.168.1.210:8888/onvif/device_service</tt:XAddr> 


     -<tt:Network xsi:type="tt:NetworkCapabilities"> 

     <tt:IPFilter>false</tt:IPFilter> 

     <tt:DynDNS>true</tt:DynDNS> 

     </tt:Network> 


     -<tt:System xsi:type="tt:SystemCapabilities"> 

     <tt:DiscoveryResolve>true</tt:DiscoveryResolve> 

     <tt:DiscoveryBye>true</tt:DiscoveryBye> 

     <tt:RemoteDiscovery>false</tt:RemoteDiscovery> 

     <tt:SystemBackup>true</tt:SystemBackup> 

     <tt:SystemLogging>true</tt:SystemLogging> 

     <tt:FirmwareUpgrade>true</tt:FirmwareUpgrade> 


     -<tt:SupportedVersions xsi:type="tt:OnvifVersion"> 

      <tt:Major>2</tt:Major> 

      <tt:Minor>21</tt:Minor> 

     </tt:SupportedVersions> 

     </tt:System> 


     -<tt:Security xsi:type="tt:SecurityCapabilities"> 

     <tt:TLS1.1>false</tt:TLS1.1> 

     <tt:TLS1.2>false</tt:TLS1.2> 

     <tt:OnboardKeyGeneration>false</tt:OnboardKeyGeneration> 

     <tt:AccessPolicyConfig>true</tt:AccessPolicyConfig> 

     <tt:X.509Token>false</tt:X.509Token> 

     <tt:SAMLToken>false</tt:SAMLToken> 

     <tt:KerberosToken>false</tt:KerberosToken> 

     <tt:RELToken>false</tt:RELToken> 

     </tt:Security> 

    </tt:Device> 


    -<tt:Events xsi:type="tt:EventCapabilities"> 

     <tt:XAddr>http://192.168.1.210:8888/onvif/device_service</tt:XAddr> 

     <tt:WSSubscriptionPolicySupport>false</tt:WSSubscriptionPolicySupport> 

     <tt:WSPullPointSupport>true</tt:WSPullPointSupport> 

     <tt:WSPausableSubscriptionManagerInterfaceSupport>false</tt:WSPausableSubscriptionManagerInterfaceSupport> 

    </tt:Events> 


    -<tt:Imaging xsi:type="tt:ImagingCapabilities"> 

     <tt:XAddr>http://192.168.1.210:8888/onvif/device_service</tt:XAddr> 

    </tt:Imaging> 


    -<tt:Media xsi:type="tt:MediaCapabilities"> 

     <tt:XAddr>http://192.168.1.210:8888/onvif/device_service</tt:XAddr> 


     -<tt:StreamingCapabilities xsi:type="tt:RealTimeStreamingCapabilities"> 

     <tt:RTPMulticast>false</tt:RTPMulticast> 

     <tt:RTP_TCP>true</tt:RTP_TCP> 

     <tt:RTP_RTSP_TCP>true</tt:RTP_RTSP_TCP> 

     </tt:StreamingCapabilities> 

    </tt:Media> 


    -<tt:PTZ xsi:type="tt:PTZCapabilities"> 

     <tt:XAddr>http://192.168.1.210:8888/onvif/device_service</tt:XAddr> 

    </tt:PTZ> 


    -<tt:Extension xsi:type="tt:CapabilitiesExtension"> 


     -<tt:DeviceIO xsi:type="tt:DeviceIOCapabilities"> 

     <tt:XAddr/> 

     <tt:VideoSources>1</tt:VideoSources> 

     <tt:VideoOutputs>0</tt:VideoOutputs> 

     <tt:AudioSources>1</tt:AudioSources> 

     <tt:AudioOutputs>0</tt:AudioOutputs> 

     <tt:RelayOutputs>0</tt:RelayOutputs> 

     </tt:DeviceIO> 

    </tt:Extension> 

    </tds:Capabilities> 

</tds:GetCapabilitiesResponse> 

+0

歡迎來到SO:SE。你能否詳細說明你的答案?它與這個問題有什麼相符?見[回答]。 – mins

相關問題