I\'m trying to use the HttpClient class to send a SOAP message:
Doing so with REST seems easy (code from here) :
using System;
using System.Net.Http;
u
I needed to do this myself and since I couldn't find any answers online, here's what I worked out. This uses a simple SOAP calculator service with an 'Add' method that takes two numbers and returns the sum.
public async Task 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(@"
{0}
{1}
", 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);
}