Search code examples
asp.net-mvc-3razorwcf-web-api

Consuming WebApi in MVC3


Using WebApi, what is the best way to consume a service in a MVC client?

If the response comes back as:

<?xml version="1.0" encoding="UTF-8"?>
<ArrayOfContact 
    xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <Contact>
        <Id>1</Id>
        <Name>Bilbo Baggins</Name>
    </Contact>
    <Contact>
        <Id>2</Id>
        <Name>Frodo Baggins</Name>
    </Contact>
</ArrayOfContact>

How can I take that, get my Contacts out and list them in a MVC3 Razor View using @Model?

There's a lot of examples online for the latest preview of WebApi but I can't find any that go a step further and show a client consuming the service, say using WebClient.

Thanks,

R.


Solution

  • You could define a model:

    public class Contact
    {
        public int Id { get; set; }
        public string Name { get; set; }
    }
    

    and then consume:

    var url = "http://localhost:9000/api/contacts";
    using (var client = new WebClient())
    using (var reader = XmlReader.Create(client.OpenRead(url)))
    {
        var serializer = new XmlSerializer(typeof(Contact[]));
        var contacts = (Contact[])serializer.Deserialize(reader);
        // TODO: Do something with the contacts
    }