none
Remover namespaces de um SOAP envelope num request RRS feed

  • Pergunta

  • Srs., boa noite!

    Estou com um problema num request onde preciso remover das tags do SOAP envelope o namespace "xmlns:xsi".

    Ja pesquisei muito e estou nisso o dia inteiro...porem nao consegui encontrar algo que fale especificamente de como tirar esses namespaces ANTES de um request.

    Para fazer o request tenho uma classe que herda do webservicereference (que herda de SoapHttpClientProtocol), onde eu ja faço o override de 2 metodos para poder capturar o envelope (e adicionar o header) antes e depois de ser enviado. So preciso saber como manipular este envelope (SoapClientMessage) para retirar esses namespaces. Alguém ja passou por isso? existe alguma forma de resolver?

    Segue exemplo da classe:

    public class SmsNotificationManagerService : SmsNotificationManagerBinding.SmsNotificationManagerService
        {
            public string _servideId { get; set; }
            public string _OA { get; set; }
            protected override WebRequest GetWebRequest(Uri uri)
            {
                HttpWebRequest webRequest = (HttpWebRequest)base.GetWebRequest(uri);
                webRequest.KeepAlive = false;
                webRequest.ProtocolVersion = HttpVersion.Version10;
             
                return webRequest;
            }
            
            protected override System.Xml.XmlWriter GetWriterForMessage(SoapClientMessage message, int bufferSize)
            {
            
                try
                {
                    RequestSOAPHeader header = new RequestSOAPHeader();
                    header.serviceId = _servideId;
                    header.OA = _OA;
                    message.Headers.Add(header);
                    
                    return base.GetWriterForMessage(message, bufferSize);
                }
                catch (Exception ex)
                {
                }
            }
        }

     

    E exemplo do envelope:

    <?xml version="1.0" encoding="utf-8" ?>
    <soap:Envelope xmlns:soap="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <soap:Header>
    <RequestSOAPHeader xmlns="http://www.csapi.org/wsdl/parlayx/sms/notification_manager/v2_3/service">
      <spId>0000</spId>
      <spPassword></spPassword>
      <timeStamp>20111021211449</timeStamp>
      <serviceId>00</serviceId>
      </RequestSOAPHeader>
      </soap:Header>
    <soap:Body>
    <startSmsNotification xmlns:q1="http://www.csapi.org/wsdl/parlayx/sms/manager/v2_3/service" xsi:type="q1:StartSmsNotification" xmlns="http://www.csapi.org/schema/parlayx/sms/manager/v2_3/local"><reference xsi:type="q1:SimpleRef">
      <endpoint xmlns="">http://blablabla.ashx</endpoint>
      <interfaceName xmlns="">Nome</interfaceName>
      <correlator xmlns="">0E4DF500A72040C59B00687191FE2C1F</correlator>
      </reference>
      <smsServiceActivationNumber>LA</smsServiceActivationNumber>
      </startSmsNotification>
      </soap:Body>
      </soap:Envelope>

     

     

    Muito Obrigado!

    sexta-feira, 21 de outubro de 2011 23:58