在反序列化应答消息的主体进行操作“的getStatus” ONVIF错误 - >字符串“153

2019-10-30 09:16发布

背景:

我正在做一个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'

我看着这个错误找到的的InnerException:

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);

当我去看看我的XML请求,并在Wireshark中其相应的XML响应,我看到有没有错误:

题 :

如何管理,使没有得到这些错误此通话吗?

没有多少我可以改变...

看来这个问题是从日期格式,但我不明白的方式来改变这种格式。

Answer 1:

要知道相机设备是否支持PTZ,你可以调用设备服务获得性能。

在获得性能列表中包括(在你的情况下,它是PTZ服务)服务的地址(XADDR)引用实现该类别中的接口操作。 如果PTZ服务未在获得性能列表中列出,然后云台是不是您的设备支持。

API的getStatus只是返回在所选配置文件中的节点云台状态。

有提供给您的Windows平台上的相机测试,以方便开发ONVIF测试工具。 http://www.happytimesoft.com/products/onvif-client/index.html



文章来源: ONVIF Error in deserializing body of reply message for operation 'GetStatus' -> The string '1532531507' is not a valid AllXsd value
标签: c# xml onvif