【发布时间】:2018-05-09 03:26:27
【问题描述】:
我有以下从this source 获取的代码...
public bool Initialise(string cameraAddress, string userName, string password)
{
bool result = false;
try
{
var messageElement = new TextMessageEncodingBindingElement()
{
MessageVersion = MessageVersion.CreateVersion(EnvelopeVersion.Soap12, AddressingVersion.None)
};
HttpTransportBindingElement httpBinding = new HttpTransportBindingElement()
{
AuthenticationScheme = AuthenticationSchemes.Digest
};
CustomBinding bind = new CustomBinding(messageElement, httpBinding);
mediaClient = new MediaClient(bind, new EndpointAddress($"http://{cameraAddress}/onvif/Media"));
mediaClient.ClientCredentials.HttpDigest.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;
mediaClient.ClientCredentials.HttpDigest.ClientCredential.UserName = userName;
mediaClient.ClientCredentials.HttpDigest.ClientCredential.Password = password;
var profs = mediaClient.GetProfiles();
//rest of the code...
当我在调试器中通过GetProfiles() 部分运行wireshark 时,我看到生成的XML 如下所示:
需要什么代码才能将 xml 更改为如下所示:
我应该如何调用GetSystemDateAndTime 函数?
要调用GetProfiles 函数,我必须创建一个MediaClient,然后调用该函数...
是否有 MediaClient 之类的东西可以访问 GetSystemDateAndTime??
编辑:
我发现您可以使用DeviceClient 来访问GetSystemDateAndTime 函数...
您需要先将设备管理 wsdl 添加到您连接的服务中: https://www.onvif.org/ver10/device/wsdl/devicemgmt.wsdl
我还在那里添加了System.Net.ServicePointManager.Expect100Continue = false;,因为我看到有人在this link 上说它有帮助...
所以我补充说:
CustomBinding bind = new CustomBinding(messageElement, httpBinding);
System.Net.ServicePointManager.Expect100Continue = false;
DeviceClient d = new DeviceClient(bind, new EndpointAddress($"http://{cameraAddress}/onvif/device_service"));
var time = d.GetSystemDateAndTime();
注意: 我仍然收到错误消息:
ErrorMessage "The header 'To' from the namespace 'http://www.w3.org/2005/08/addressing' was not understood by the recipient of this message, causing the message to not be processed. This error typically indicates that the sender of this message has enabled a communication protocol that the receiver cannot process. Please ensure that the configuration of the client's binding is consistent with the service's binding. " string
【问题讨论】:
标签: c# wsdl visual-studio-2017 onvif