【问题标题】:ASP.NET - GET Web Request APIASP.NET - 获取 Web 请求 API
【发布时间】:2014-07-10 17:41:18
【问题描述】:

我是 API 新手,所以我一直在尝试使用网络请求从 Reddit 获取信息,因为 API 已解锁。我已经能够使用正确的 URL 使用 REST 客户端扩展来获取信息,但我想实现数据的主体,只需将其打印到网页上即可。

我知道这使用 python 更容易,但他们在我的工作中使用 C#/ASP.NET。我看过以下教程:

http://www.asp.net/web-api/overview/web-api-clients/calling-a-web-api-from-a-net-client

当我使用本教程时,我只能获得一个标题,我的代码是:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Net.Http;
using System.Net.Http.Headers;
using System.Threading.Tasks;

namespace API_TESTING
{
    class Product
    {
        public string Name { get; set; }
        public double Price { get; set; }
    }
    class Program
    {
    static void Main()
    {
        RunAsync().Wait();
    }

    static async Task RunAsync()
    {
        using(var client = new HttpClient())
        {
            //TODO - send HTTP requests
            client.BaseAddress = new Uri("http://www.reddit.com/");
            client.DefaultRequestHeaders.Accept.Clear();
            client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            //-----
            HttpResponseMessage response =  await client.GetAsync("r/todayilearned/new.json");
            if(response.IsSuccessStatusCode)
            {
                Console.Write(response);

            }

        }
    }
}
}

谁能解释如何使用 ASP.NET 进行 API 调用?或链接到其他最新教程?谢谢你。

【问题讨论】:

  • 您的问题是什么。你遇到异常了吗?输出是否与您的预期不同?包括样本实际输出和预期输出。您应该在问题中包含该信息,而不是我们必须向您询问。
  • 我提到我只是将标题作为我的输出。我想我没有说清楚我的目标是获取 web API GET 调用的 body/json。对不起。

标签: c# asp.net api


【解决方案1】:

你快到了。收到响应后,您需要阅读其内容。

var response = await _client.GetAsync(uri);
if (response.IsSuccessStatusCode) {
    var result = await response.Content.ReadAsStringAsync();
    Console.WriteLine(result);
}

您可能想查看 RedditSharp 项目,看看其他人是如何做到这一点的。 顺便说一句,您链接到的教程几乎与我在获取资源 (HTTP GET) 部分中回答的内容完全相同。唯一的区别是他们使用通用的ReadAsAsync,而如果您只是将正文写入控制台,则可以使用ReadAsStringAsync

【讨论】:

  • 非常感谢。该程序在网页上的工作方式是否类似?
  • @user3704986 任何你在 c# 中使用它的地方都可以。我建议将所有 Reddit 代码移到单独的项目中,以便您可以重用它。这样,您只需编写一次,相同的代码就可以在您的控制台应用程序和 Web 应用程序中使用。无需将结果写入控制台,只需将内容作为字符串返回,以便不同的客户端可以以自己的方式对响应做出反应。
猜你喜欢
  • 2016-03-12
  • 1970-01-01
  • 2012-09-02
  • 2012-12-18
  • 2020-07-06
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-14
相关资源
最近更新 更多