Skip to content

Solid.Http.Extensions.Xml Usage

HX-Rd edited this page Mar 20, 2018 · 2 revisions

Adding xml content to the request

Adding xml serialized content to the request can be done as follows

var client = context.RequestServices.GetRequiredService<ISolidHttpClientFactory>().CreateWithBaseAddress("http://SomeBaseUri");
var obj = new ObjectToSerialize();
var response = await client
    .PostAsync("some/path/that/accepts/xml/post", cancellationToken)
    .WithXmlContent(obj)

Deserializing xml response content

Getting serialized xml to objects can be done as follows

public class ValuesController : Controller
{
    private SolidHttpClient _client;
    public ValuesController(ISolidHttpClientFactory factory)
    {
        _client = factory.CreateWithBaseAddress("http://mockbin.com");
    }
    [HttpGet]
    public async Task GetAsync()
    {
        var resp = await client
            .GetAsync("request")
            .WithHeader("Accept", "application/xml")
            .As<MockbinResponse>();
        return Ok(resp);
    }
}

Where the models could look something like this

    [DataContract(Name = "headers", Namespace = "")]
    public class MockbinHeaders
    {
        [DataMember(Name = "host")]
        public string Host { get; set; }
    }

    [DataContract(Name = "response", Namespace = "")]
    public class MockbinResponse
    {
        [DataMember(Name = "startedDateTime", Order = 1)]
        private DateTime Started { get; set; }
        [DataMember(Name = "clientIPAddress", Order = 2)]
        public string ClientIPAddress { get; set; }
        [DataMember(Name = "method", Order = 3)]
        public string Method { get; set; }
        [DataMember(Name = "url", Order = 4)]
        public string Url { get; set; }
        [DataMember(Name = "headers", Order = 5)]
        public MockbinHeaders Headers { get; set; }
    }