send SOAP http request in C# code example
Example: httpclient soap request c#
public async Task<int> AddNumbersAsync(Uri uri, int a, int b)
{
var soapString = this.ConstructSoapRequest(a, b);
using (var client = new HttpClient())
{
client.DefaultRequestHeaders.Add("SOAPAction", "http://CalculatorService/ICalculatorService/Add");
var content = new StringContent(soapString, Encoding.UTF8, "text/xml");
using (var response = await client.PostAsync(uri, content))
{
var soapResponse = await response.Content.ReadAsStringAsync();
return this.ParseSoapResponse(soapResponse);
}
}
}
private string ConstructSoapRequest(int a, int b)
{
return String.Format(@"<?xml version=""1.0"" encoding=""utf-8""?>
<s:Envelope xmlns:s=""http://schemas.xmlsoap.org/soap/envelope/"">
<s:Body>
<Add xmlns=""http://CalculatorService/"">
<a>{0}</a>
<b>{1}</b>
</Add>
</s:Body>
</s:Envelope>", a, b);
}
private int ParseSoapResponse(string response)
{
var soap = XDocument.Parse(response);
XNamespace ns = "http://CalculatorService/";
var result = soap.Descendants(ns + "AddResponse").First().Element(ns + "AddResult").Value;
return Int32.Parse(result);
}