КОНТЕКСТ:
В настоящее время я пытаюсь кодировать приложение C #, чтобы получать информацию, такую как канал камеры, dateTime, потоковый URL, профили и многое другое, с IP-камерыиспользуя ONVIF "стандарт" ...
Мне удалось получить системное время камеры, используя этот бит кода:
public bool Initialise(string cameraAddress, string userName, string password)
{
bool result = false;
try
{
var messageElement = new TextMessageEncodingBindingElement()
{
MessageVersion = MessageVersion.CreateVersion(EnvelopeVersion.Soap12, AddressingVersion.WSAddressing10)
};
HttpTransportBindingElement httpBinding = new HttpTransportBindingElement()
{
AuthenticationScheme = AuthenticationSchemes.Digest
};
CustomBinding bind = new CustomBinding(messageElement, httpBinding);
System.Net.ServicePointManager.Expect100Continue = false;
DeviceClient deviceClient = new DeviceClient(bind, new EndpointAddress($"http://{cameraAddress}/onvif/device_service"));
var temps = deviceClient.GetSystemDateAndTime();
}
catch (Exception ex)
{
ErrorMessage = ex.Message;
}
return result;
}
Функция deviceClient.GetSystemDateAndTime()
публикует этот XML/ SOAP конверт через http: ![img0](https://i.stack.imgur.com/NcUGo.png)
Я читаю этот XML из wireshark, когда запускаю функцию через отладчик VS2017 ...
Угадай: Я пытаюсь добавить тип аутентификации UsernameToken в свой код, чтобы я мог выполнять операции, требующие аутентификации такого типа ...
Вот изображение рабочего конверта XML / SOAP, который яхотел бы достичь: ![img1](https://i.stack.imgur.com/xNjcV.png)
Я пытался добавить эти строки в мой код:
deviceClient = new DeviceClient(bind, new EndpointAddress($"http://{cameraAddress}/onvif/device_service"));
deviceClient.ClientCredentials.HttpDigest.AllowedImpersonationLevel = System.Security.Principal.TokenImpersonationLevel.Impersonation;
deviceClient.ClientCredentials.HttpDigest.ClientCredential.UserName = userName;
deviceClient.ClientCredentials.HttpDigest.ClientCredential.Password = password;
, но он даже не добавляет пользователя /бит пароля к XML, который я отправляю ....
ВОПРОС: Как я могу добавить это имя пользователя, добавленное взаголовок отправляемого конверта XML / SOAP?