在MVC3中使用WebApi

Ric*_*ard 3 razor asp.net-mvc-3 wcf-web-api

使用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>
Run Code Online (Sandbox Code Playgroud)

如何使用@Model将我的联系人输出并在MVC3 Razor View中列出?

WebApi的最新预览在网上很多例子,但我找不到任何更进一步的例子,并且显示客户正在使用该服务,比如说使用WebClient.

谢谢,

R.

Ale*_*ler 6

WCF Web API附带了一个新的,改进的HttpClient实现.请查看此示例(包含在您可以在此处下载的源代码中).

[更新]

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);
Run Code Online (Sandbox Code Playgroud)


Dar*_*rov 5

您可以定义一个模型:

public class Contact
{
    public int Id { get; set; }
    public string Name { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

然后消费:

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
}
Run Code Online (Sandbox Code Playgroud)