【问题标题】:How to call a RESTful API with ASP.NET 5如何使用 ASP.NET 5 调用 RESTful API
【发布时间】:2015-10-02 10:11:57
【问题描述】:

在我的 Mac 上使用 Visual Studio Code 使用 ASP.NET 5。我有一个需要调用的 RESTful API,但不知道该怎么做。我见过很多使用 WebClient、HttpClient、WebRequest 和 HttpWebRequest 的示例。

我认为我的痛点是 dnxcore50 框架。有人可以用一些代码示例为我指明正确的方向吗?

【问题讨论】:

  • HttpClient 在 .NET Core 中可用。这个question 相当老了,我怀疑你可以从 NuGet 获得它,而不必现在去夜间构建。
  • @AnhTriet,我试过了,但我得到了这一行: Product product = await response.Content.ReadAsAsync>Product>();我收到此错误:“HttpContent”不包含“ReadAsAsync”的定义,并且找不到接受“HttpContent”类型的第一个参数的扩展方法“ReadAsAsync”(您是否缺少 using 指令或程序集引用?)[ dnx451, dnxcore50]
  • 请在问题中提供您的代码。
  • 你发的教程里的。

标签: asp.net asp.net-core dnx


【解决方案1】:

这是一个关于如何调用服务的示例。请仔细检查Referencesusing

您必须做的一件重要事情是安装 Web API 客户端库包:从“工具”菜单中,选择 NuGet 包管理器,然后选择 包管理器控制台。在包管理器控制台窗口中,键入以下命令:Install-Package Microsoft.AspNet.WebApi.Client

如需完整源代码,请查看link

【讨论】:

  • 得到一个稍微不同的错误,但这里是一个屏幕截图:dl.dropboxusercontent.com/u/6651060/error.jpg
  • >Tracker> 处的错字。应该是<Tracker>
  • 哇!面对手掌....不敢相信我错过了。最终,我确实遵循了该教程并使用了@Gigi 所说的一些内容。感谢您的帮助!
  • 当我将它用于 MacOS 项目时,它不会在发布模式下构建。
【解决方案2】:

我假设这与我们在 ASP .NET 5 之前使用的方式相同,因此首先安装 ASP .NET Web API 客户端库 NuGet 包。

如果可用,请参考System.Net.Http:

using System.Net.Http;

那你按如下方式使用:

using (var httpClient = new HttpClient())
{
    var response1 = await httpClient.GetAsync(url1);
    var response2 = await httpClient.PostAsync(url2);
    var response3 = await httpClient.SendAsync(url3);
}

这只是给你回应。通常,您需要查看内容,尤其是对于 GET 请求。你可以这样做:

var content = await response1.Content.ReadAsStringAsync();

这只是给你内容中的字符串,所以如果它是 JSON,你可能想使用 JSON.NET (Newtonsoft.Json) 之类的东西将其反序列化为结构化类。

这是凭记忆整理的,因此您可能需要在这里和那里稍作调整。

【讨论】:

  • 这个问题是专门关于 .NET Core 的,你的回答没有解决。
  • 我以为有人说 HttpClient 在 .NET Core 中可用。
  • 是的。但它在不同的命名空间中。还有一个不同的 NuGet 包。并且可能是完全不同的 NuGet 提要。
  • 另外,您的代码示例显示了一个接一个的等待调用,它们看起来并不相互依赖。 Task.WaitAllTask.WaitAny 的完美用例。
  • 这只是一个示例,展示了 httpClient 方法的不同用途。它绝不是并发执行代码的好例子。
【解决方案3】:

为此,我使用 NuGet 提要https://api.nuget.org/v3/index.json

在我的 project.json 中,我目前有这些相关的依赖项,只使用“dnxcore50”框架:

"Microsoft.AspNet.WebApi.Client": "5.2.3",
"System.Net.Http": "4.0.0",
"System.Runtime.Serialization.Xml": "4.0.10"

然后我正在使用 HttpClient。目前(beta7)由于https://github.com/dotnet/corefx/issues/2155,它不能在Linux 或OSX 上运行。

【讨论】:

    猜你喜欢
    • 2014-04-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-06-13
    • 2021-07-09
    • 2019-08-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多