【问题标题】:How to consume REST service from a MVC 4 web application?如何从 MVC 4 Web 应用程序使用 REST 服务?
【发布时间】:2014-02-10 16:49:16
【问题描述】:

有人可以告诉我如何从 MVC 4 Web 应用程序使用外部 REST 服务吗?这些服务依赖于使用基于 64 位编码的凭证的初始调用,然后返回一个用于进一步 Web 服务查询的令牌。

我找不到关于如何做这种事情的简单入门,有人可以帮忙吗? 我在经典的 ASP 和 JQuery 中完成了所有这些工作,但需要转移到 MVC 4 Web 应用程序。

【问题讨论】:

    标签: asp.net-mvc-4 rest


    【解决方案1】:

    您可以使用HttpClient 类。以下是如何发送 GET 请求并使用基本身份验证的示例:

    var client = new HttpClient();
    client.BaseAddress = new Uri("http://foo.com");
    var buffer = Encoding.ASCII.GetBytes("john:secret");
    var authHeader = new AuthenticationHeaderValue("Basic", Convert.ToBase64String(buffer));
    client.DefaultRequestHeaders.Authorization = authHeader;
    var response = client.GetAsync("/api/authenticate").Result;
    if (response.IsSuccessStatusCode)
    {
        string responseBody = response.Content.ReadAsStringAsync().Result;
    }
    

    一旦您检索到访问令牌,您就可以进行经过身份验证的调用:

    var client = new HttpClient();
    client.BaseAddress = new Uri("http://foo.com");
    string accessToken = ...
    var authHeader = new AuthenticationHeaderValue("Bearar", accessToken);
    client.DefaultRequestHeaders.Authorization = authHeader;
    var response = client.GetAsync("/api/bar").Result;
    if (response.IsSuccessStatusCode)
    {
        string responseBody = response.Content.ReadAsStringAsync().Result;
    }
    

    【讨论】:

    • 非常感谢您,第一个块工作正常,并将 json 数组作为字符串返回。伟大的。我现在的问题是如何从 json 中提取项目?
    • 您可以定义一个将映射到 JSON 属性的类,然后在 response.Content 上使用 ReadAsAsync<T> 方法,该方法会自动将 JSON 解析为您定义的类。作为替代方案,您可以手动解析使用 JSON 序列化程序获得的字符串响应,以便提取您在此 JSON 中查找的信息。
    • 达林谢谢。我现在发现的是,从初始 json 响应中取回令牌后,我无法将其传递给下一个 rest 调用(嵌套在 ajax 调用成功时),该调用应该发送作为身份验证接收的令牌,以及查询字符串参数, 并取回数据 Json 数组。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-10-23
    • 2011-02-02
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多