4

オープン ソース ライブラリ Onvif を使用して、ネットワークに接続されているデバイスを収集する ac# Windows アプリケーションを作成しています。

私はこのようにしています。

    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;

エラー メッセージ :: There was no endpoint listen at http:// something:port/onvif/device_service that could accept the message.これは多くの場合、アドレスが正しくないか、SOAP アクションが原因で発生します。

誰でも私を助けることができますか?

サーバーと適切に接続していないと思いますが、そうですか? もしそうなら、それを解決する方法は?

4

2 に答える 2

2

おそらく、WS-DISCOVERY は追加情報を提供します。カメラの IP の後にポートを使用しないようにします。

テストが UDP をマルチキャスト アドレス 239.255.255.250、ポート 3702 (WS-Discovery) に送信すると、カメラの応答は次のようになります。

<?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 が予期したデフォルトでないかどうかを確認してください。

于 2012-05-30T11:32:36.107 に答える