2013-11-11 3 views
0

Мне нужно использовать стороннюю службу в моей кодовой базе C#, которая требует добавления узла в запрос. (Развейте вопрос ws-addressing in soap request programatically)Создание wsa soap с помощью кода C#

То, что я в состоянии достигнуть до сих пор

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <soap:Header xmlns:soap="http://www.w3.org/2005/08/addressing"> 
     <wsa:Action xmlns:wsa="Action">http://tempuri.org/GetDetails</wsa:Action> 
     <wsa:To xmlns:wsa="To">SAMPLEURL.svc/DP2Svcs11</wsa:To> 
    </soap:Header> 
    <soap:Body> 
     <GetBookingDetails xmlns="http://tempuri.org/"> 
     <UserName>testt</UserName> 
     <Password>testt</Password> 

     </GetBookingDetails> 
    </soap:Body> 
</soap:Envelope> 

Что мне нужно, наконец, попал в сервис

<soap:Envelope xmlns:soap="http://www.w3.org/2003/05/soap-envelope" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema"> 
    <soap:Header xmlns:wsa="http://www.w3.org/2005/08/addressing"> 
     <wsa:Action>http://tempuri.org/GetDetails</wsa:Action> 
     <wsa:To>http://SAMPLEURL.svc/DP2Svcs11</wsa:To> 
    </soap:Header> 

    <soap:Body> 
     <GetBookingDetails xmlns="http://tempuri.org/"> 
     <UserName>testt</UserName> 
     <Password>test</Password> 
     </GetBookingDetails> 
    </soap:Body> 
</soap:Envelope> 

Может кто-то пожалуйста, помогите, как изменить как упоминалось?

Код, используемый для генерации выше реакции является

XmlDocument xmlDoc = new XmlDocument(); 
     inwardStream.Position = 0; 
     var streamReader = new StreamReader(inwardStream); 
     var streamWriter = new StreamWriter(outwardStream); 
     message = streamReader.ReadToEnd(); 

     xmlDoc.LoadXml(message); 
     var insertNode = (((xmlDoc).LastChild)); 
     var headerNode = xmlDoc.CreateElement("soap", "Header", "http://www.w3.org/2005/08/addressing"); 

     //var actionNode = xmlDoc.CreateElement("wsa", "Action", "http://www.w3.org/2004/12/addressing"); 
     //var actionNodeTo = xmlDoc.CreateElement("wsa", "To", "http://www.w3.org/2004/12/addressing"); 
     var actionNode = xmlDoc.CreateElement("wsa:Action", "Action"); 
     var actionNodeTo = xmlDoc.CreateElement("wsa:To", "To"); 

     actionNode.InnerText = "http://tempuri.org/IFlightBookingService/GetBookingDetails"; 
     actionNodeTo.InnerText = "http://54.251.105.26/GQWCF_FlightEngine/FlightBookingService.svc/DP2Svcs11"; 

     headerNode.AppendChild(actionNode); 
     headerNode.AppendChild(actionNodeTo); 
     (((((xmlDoc))).LastChild)).InsertBefore(headerNode, (((((xmlDoc))).LastChild)).FirstChild); 

ответ

0

Редактировать строки:

var actionNode = xmlDoc.CreateElement("wsa:Action", "Action"); 
     var actionNodeTo = xmlDoc.CreateElement("wsa:To", "To"); 

к:

var actionNode = xmlDoc.CreateElement("wsa:Action"); 
     var actionNodeTo = xmlDoc.CreateElement("wsa:To"); 
+0

Лаки, изменение к тому, что вы предложили, приведет к и узлов вместо и узел. – Hitesh

+0

sorry c/p Я имел в виду var actionNode = xmlDoc.CreateElement ("wsa: Action"); var actionNodeTo = xmlDoc.CreateElement ("wsa: To"); –

Смежные вопросы