Использование WebApi в MVC3 - PullRequest
       6

Использование WebApi в MVC3

3 голосов
/ 08 декабря 2011

Как использовать WebApi, как лучше всего использовать службу в клиенте MVC?

Если ответ возвращается как:

<?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>

Как я могу это получить, получите мойКонтакты и перечислите их в MVC3 Razor View, используя @Model?

В сети много примеров для последнего предварительного просмотра WebApi, но я не могу найти ни одного, который пошел бы дальшеи покажите клиенту , потребляющему службу, скажем, с использованием WebClient.

Спасибо,

R.

Ответы [ 2 ]

6 голосов
/ 08 декабря 2011

WCF Web API поставляется с новой улучшенной реализацией HttpClient. Пожалуйста, посмотрите на этот образец (который включен в исходный код, который вы можете загрузить здесь ).

[Update]

var client = new HttpClient();
var task = client.GetAsync("http://webapi/Contacts");
var contacts = task.ContinueWith(
    t => {
        return t.Result.Content.ReadAsAsync<List<Contact>>();
    }).Unwrap().Result;

Console.WriteLine(contacts.Count);
5 голосов
/ 08 декабря 2011

Вы можете определить модель:

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

и затем потреблять:

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
}
...