代码之家  ›  专栏  ›  技术社区  ›  LoukMouk

反序列化操作“GetStatus”的回复消息正文时出现ONVIF错误->字符串“1532531507”不是有效的AllXsd值

  •  0
  • LoukMouk  · 技术社区  · 6 年前

    上下文:

    我正在制作一个c#windows窗体应用程序,使用ONVIF网站上提供的wsdl与ONVIF摄像头进行通信。

    https://www.onvif.org/ver10/media/wsdl/media.wsdl

    https://onvif.org/onvif/ver20/ptz/wsdl/ptz.wsdl

    我可以在相机上获取配置文件,发送PTZ操作等等,但是当我尝试获取 ptzClient 我创造了,我得到了错误:

    Error in deserializing body of reply message for operation 'GetStatus'
    

    在这个错误中我找到了一个例外:

    The string '1532531507' is not a valid AllXsd value.
    

    下面是我如何创建ptzClient:

    ServicePointManager.Expect100Continue = false;
    var commonEncoding = new TextMessageEncodingBindingElement
                    {
                        MessageVersion = MessageVersion.CreateVersion(EnvelopeVersion.Soap12, AddressingVersion.None)
                    };
    var commonBinding = new HttpTransportBindingElement
                    {
                        AuthenticationScheme = AuthenticationSchemes.Digest
                    };
    var commonCustomBinding = new CustomBinding(commonEncoding, commonBinding);
    var commonPasswordDigestBehavior = new PasswordDigestBehavior(userName, password);
    var ptzEndpointAddress = new EndpointAddress($"http://{cameraAddress}/onvif/ptz");
    ptzClient = new PTZClient(commonCustomBinding, ptzEndpointAddress);
    ptzClient.Endpoint.EndpointBehaviors.Add(commonPasswordDigestBehavior);
    

    调用以下代码行时出错:

    var p = ptzClient.GetStatus(profile.token);
    

    enter image description here

    问题:

    我没什么可以改变的。。。

    问题似乎出在日期格式上,但我看不出改变这种格式的方法。

    1 回复  |  直到 6 年前
        1
  •  0
  •   kiran Biradar    6 年前

    要知道相机设备是否支持PTZ,可以在设备服务上调用GetCapabilities。

    GetCapabilities列表包含对实现类别中接口操作的服务(在您的示例中是PTZ服务)的地址(XAddr)的引用。如果PTZ服务未在GetCapabilities列表中列出,则您的设备不支持PTZ。

    getstatusapi只返回所选概要文件中节点的PTZ状态。

    http://www.happytimesoft.com/products/onvif-client/index.html