在 MVC3 中使用 WebApi

发布于 2024-12-20 01:26:12 字数 807 浏览 1 评论 0原文

使用 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>

我该如何获取我的联系人并使用 @Model 将它们列在 MVC3 Razor 视图中?

很多在线示例 对于 WebApi 的最新预览版,但我找不到任何更进一步并显示客户端使用服务的内容,例如使用 WebClient。

谢谢,

R。

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.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

維他命╮ 2024-12-27 01:26:12

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);

WCF Web API comes with a new, improved HttpClient implementation.
Please take a look at this sample (which is included in the source code you can download here).

[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);
最美的太阳 2024-12-27 01:26:12

您可以定义一个模型:

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
}

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
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文