2012-05-29 53 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

相关问题