Как преобразовать строку в SOAPMessage на C#

#c# #.net #wcf #soap #udpclient

#c# #.net #wcf #soap #udpclient

Вопрос:

Я пишу приложение, в котором по требованию я должен взаимодействовать с одним устройством и отправлять SOAP-сообщение через UDP. Я использую класс .Net UdpClient для связи с этим устройством. Я получаю ответ от этого в UdpClient, но я получаю это как массив Byte[]. Как я могу преобразовать это в объект SOAPMessage?

     public void ReceiveCallback(IAsyncResult ar)
    {
        UdpClient udpClient = (UdpClient)((UdpState)(ar.AsyncState)).udpClient;
        IPEndPoint ipEndpt = (IPEndPoint)((UdpState)(ar.AsyncState)).ipEndpt;

        Byte[] receiveBytes = udpClient.EndReceive(ar, ref ipEndpt);
        string receiveString = Encoding.ASCII.GetString(receiveBytes);
                   //Here receiveString  I want to convert to SoapMessage
        BeginReceive();
    }
  

Ответ №1:

Я бы рекомендовал использовать WCF для создания клиента для вас и реализации вашего собственного канала для обработки связи с клиентом. Вы должны быть в состоянии подключить свой код. Конечно, большая часть обмена данными с сокетами уже выполняется WCF, поэтому при использовании WCF ваш код на самом деле не нужен.

смотрите:

http://msdn.microsoft.com/en-us/library/ms789050.aspx

Ответ №2:

В этой статье MSDN показано, как создать привязку на основе транспорта UDP для WCF, которую вы можете использовать для своего клиента. Предполагая, что у вас есть доступ к WSDL для службы, создание и настройка этой UDP-привязки имеет смысл, поскольку она будет обрабатывать всю сериализацию / десериализацию за вас. Код статьи доступен как часть примеров WCF / WF для .NET 4, так что вы можете приступить к работе, просто загрузив и установив образцы.

Если у вас нет доступа к WSDL, то, по крайней мере, вы можете заглянуть в пример кода, чтобы увидеть, как обрабатывать содержимое UdpClient.