如何使用ASP.NET 5调用RESTful API

如何使用ASP.NET 5调用RESTful API,asp.net,asp.net-core,dnx,Asp.net,Asp.net Core,Dnx,使用Visual Studio代码在我的Mac上使用ASP.NET 5。我有一个需要调用的RESTful API,但不确定具体怎么做。我见过许多使用WebClient、HttpClient、WebRequest和HttpWebRequest的示例 我认为我的痛点是dnxcore50框架。有人能用一些代码示例为我指出正确的方向吗?我假设这与我们在ASP.NET 5之前使用的方法相同,因此首先安装ASP.NET Web API客户端库NuGet包 有了它,您可以引用System.Net.Http:

使用Visual Studio代码在我的Mac上使用ASP.NET 5。我有一个需要调用的RESTful API,但不确定具体怎么做。我见过许多使用WebClient、HttpClient、WebRequest和HttpWebRequest的示例


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

我假设这与我们在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)的东西将其反序列化为结构化类


这是来自内存的,因此您可能需要在这里和那里进行一些调整。

为此,我使用NuGet提要

在我的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)它在Linux或OSX上不工作,因为。

下面是一个关于如何调用服务的示例。请仔细检查
参考
使用

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

有关完整的源代码,请选中此项


Read HttpClient在.NET Core中提供。这是一个相当古老的版本,我怀疑您现在可以从NuGet获得它,而无需进入夜间版本。@AnhTriet,我尝试过,但我得到的是这一行:Product Product=wait response.Content.ReadAsAsync>Product>();我发现此错误:“HttpContent”不包含“ReadAsAsync”的定义,并且找不到接受“HttpContent”类型的第一个参数的扩展方法“ReadAsAsync”(是否缺少using指令或程序集引用?[dnx451,dnxcore50]请在问题中提供您的代码。这是您发送的教程中的代码。这个问题是专门关于.NET Core的,您的答案没有提到。我想有人说在.NET Core中可以使用HttpClient。是的,它是。但它在不同的名称空间中。还有一个不同的NuGet包。而且可能是一个完全不同的NuGet提要。另外,您的代码示例显示了一组一个接一个的等待调用,它们看起来并不相互依赖。这是
Task.WaitAll
Task.WaitAny
的完美用例。它只是一个展示httpClient方法不同用法的示例。这绝不是并发执行代码的一个好例子。得到一个稍微不同的错误,但这里有一个屏幕截图:在
>Tracker>
输入错误。应该是
。哇!掌心。。。。真不敢相信我错过了。最后,我确实遵循了那个教程,并使用了@Gigi所说的一些内容。谢谢你的帮助!当我在MacOS项目中使用它时,它不是在发布模式下构建的。