【问题标题】:How to use HttpClient in ASP.NET Core app如何在 ASP.NET Core 应用程序中使用 HttpClient
【发布时间】:2015-05-18 13:21:41
【问题描述】:

我正在尝试使用 ASP.NET Core(又名 vNext)构建应用程序。我需要调用第三方 REST-API。传统上,我会使用 HttpClient。但是,我似乎无法让它工作。在我的 project.json 文件中,我有:

"dependencies": {
    "Microsoft.Net.Http.Client": "1.0.0-*"
}

当我运行 dnu restore 时,我收到一条错误消息:“无法找到 Microsoft.Net.Http.Client >= 1.0.0-*”。评论者引用的其他帖子已过时。

我正在 Mac OS X 中构建这个应用程序。我不认为这有什么不同。不过,HttpClient 是调用第三方 REST API 的推荐方法吗?如果没有,我应该使用什么?如果是,我做错了什么?

谢谢!

【问题讨论】:

  • 无法回答您缺少的二进制问题,但 HttpClient 是首选(较新版本)使用的 API(优于 WebClient)
  • @PatrickHofman 这种方法似乎已经过时了。然而,我尝试按照GitHub repo 中的方法进行操作,但仍然遇到同样的错误。
  • 好的,我撤回了我的近距离投票。

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


【解决方案1】:

你试过Microsoft ASP.NET Web API 2.2 Client Library

只需添加对您的project.json 文件的引用,如下所示:

"dependencies": {
    "Microsoft.AspNet.WebApi.Client": "5.2.3"
}

包还原后,您可以像下面这样调用您的 Web Api:

using (var client = new HttpClient())
{
    client.BaseAddress = new Uri("http://yourapidomain.com/");
    client.DefaultRequestHeaders.Accept.Clear();
    client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

    var response = await client.GetAsync("api/products/1");
    if (response.IsSuccessStatusCode)
    {
        var product = await response.Content.ReadAsAsync<Product>();
    }
}

你也可以在http://www.asp.net/web-api/overview/advanced/calling-a-web-api-from-a-net-client找到详细教程

【讨论】:

    【解决方案2】:

    我正在查看NuGet page for that package。最早的版本号是2.0.20505。您的项目指定了 1.0.0-* 的任何内容。似乎这将排除 2.X 版本。尝试仅指定最新版本 2.2.29

    请注意,我不是 100% 熟悉 vNext 如何解析包,所以1.0.0.0-* 可以很好地引入2.X 包,我的回答只是基于语法的猜测。如果它不起作用,请告诉我,我将删除我的答案。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2018-06-12
      • 2019-09-14
      • 2018-10-08
      • 1970-01-01
      • 2016-04-13
      • 2020-07-06
      • 1970-01-01
      相关资源
      最近更新 更多