欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

在ASP.NET Core中用HttpClient发送POST, PUT和DELETE请求

程序员文章站 2022-04-12 23:40:06
在中,我们已经学习了如何在asp.net core中使用httpclient从web api获取数据。此外,我们还学习了如何使用getasync方法和httprequestmessage类发送get请...

在中,我们已经学习了如何在asp.net core中使用httpclient从web api获取数据。此外,我们还学习了如何使用getasync方法和httprequestmessage类发送get请求。在本文中,我们将学习如何在asp.net core中使用httpclient发送post、put和delete请求,并使用postasync、putasync、deleteasync和httprequestmessage类创建请求。

在asp.net core中使用httpclient发送post请求

如果读过,就知道在companyemployees.client中有一个httpclientcrudservice 类。这个类已经包含了两个方法,我们将在本文中对它进行扩展。

既然配置已经准备好了,我们可以添加一个新方法来发送post请求到web api:

我们首先准备一个想要创建的company对象,并使用serialize方法对其进行序列化。然后,创建一个新的stringcontent对象,提供序列化所需的数据及参数。之后,我们使用postasync方法将post请求发送到api。在收到响应之后,我们检查它是否成功。然后,通过使用readasstringasync方法读取内容并使用jsonserializeroptions参数对内容进行反序列化(来自上一篇文章)。请记住我们在上一篇文章中创建的_options参数。

此时,我们必须确保客户端应用程序调用这个方法。然后修改execute方法:

现在,如果我们在createcompany方法中放置一个断点,并启动两个应用程序:

在ASP.NET Core中用HttpClient发送POST, PUT和DELETE请求

我们可以看到结果。如果你愿意,还也可以查一下数据库。

使用httprequestmessage发送post请求

postasync方法是一个快捷方法,因为它封装了httprequestmessage类。正如我们所见,它非常好用。但是,如果我们想对请求有更大的控制,并显式地设置不同的请求选项,如header,我们必须使用httprequestmessage类。那么,让我们看看如何做到这一点:​​​​​​​

同样,我们从创建companyforcreation对象及其序列化开始。然后,我们在创建一个httprequestmessage对象,并提供请求类型和地址。在此之后,我们添加一个accept头,以确定我们支持哪种格式作为响应。紧接着,我们使用stringcontent类并提供序列化数据对象和编码类型来填充请求。同样,我们用contenttype属性指定请求的媒体类型。

我们也可以在stringcontent类的构造函数中配置contenttype,但是有了这个实现,就更容易理解过程。

为了发送请求,我们使用sendasync方法。在确定返回成功的状态码之后,我们读取内容并反序列化它。

现在,我们可以修改execute方法:​​​​​​​

在我们的新方法中放置一个断点,然后启动我们的客户端应用:

在ASP.NET Core中用HttpClient发送POST, PUT和DELETE请求

可以看到,数据成功创建了。同样,如果检查响应,我们会发现201:

在ASP.NET Core中用HttpClient发送POST, PUT和DELETE请求

在asp.net core中使用httpclient发送一个put请求

就像处理post请求一样,我们将首先使用快捷方法,然后展示如何使用httprequestmessage类做同样的事情。

在修改客户端项目之前,我们只想提一下,web api的updatecompany操作返回了一个nocontent响应。因此,在客户端上不需要反序列化任何内容,只有一个204状态码。

也就是说,我们已经准备好在httpclientcrudservice 类中添加一个新方法:​​​​​​​

在这个方法中,我们创建一个新的updatedcompany对象,该对象具有修改后的address属性。然后,就像我们在createcompany方法中所做的那样,序列化对象并创建一个新的stringcontent。在此之后,我们在控制器创建更新数据的action。一旦这样做了,我们将使用putasync快捷方法发送put请求,并确保接收到一个成功的状态码。在本例中是204 - nocontent状态码。

有了这些,我们可以修改execute方法:​​​​​​​

现在,让我们在updatecompany方法中放置一个断点,并启动应用程序:

在ASP.NET Core中用HttpClient发送POST, PUT和DELETE请求

同样,如果我们检查我们的数据库:

在ASP.NET Core中用HttpClient发送POST, PUT和DELETE请求

现在可以确认我们数据更新成功了。

使用httprequestmessage类发送put请求

正如我们已经说过的,使用httprequestmessage类可以让我们更好地控制请求。所以,让我们看看如何利用它来发送put请求:​​​​​​​

当我们查看这个方法时,可以看到它的实现与createcompanywithhttprequestmessage方法几乎相同。当然,这里我们创建了一个额外的uri参数,并且我们没有反序列化响应正文内容,因为它是空的。

在方法实现之后,让我们从execute方法中调用它:​​​​​​​

让我们启动应用程序:

在ASP.NET Core中用HttpClient发送POST, PUT和DELETE请求

成功了。如果不放心也可以检查一下数据库。

使用httpclient发送delete请求

由于delete请求是前面所有请求中最简单的,所以我们只展示代码。所以,让我们首先看看如何发送一个带有快捷方式deleteasync方法的delete请求:​​​​​​​

同样,让我们从execute方法中调用这个方法:​​​​​​​

一旦我们运行客户端应用程序,我们就会得到204响应。这是web api中delete操作的有效响应。

现在,让我们看看如何使用httprequestmessage类来做同样的事情:​​​​​​​

也没什么新鲜的。我们仍然在请求中添加accept头。然后,我们必须在客户端反序列化这些内容。我们可以从execute方法中调用这个方法并运行应用程序,应该会收到204状态码。

结论

因此,在本文中,我们学习了如何使用快捷方法和httprequestmessage类从客户端应用程序发送post、put和delete请求。结合我们从上一篇文章中获得的知识,我们已经使用httpclient类覆盖了所有的crud方法。

在下一篇文章中,我们将更多地了解patch请求以及如何使用httpclient发送它。

原文链接:

以上就是在asp.net core中用httpclient发送post, put和delete请求的详细内容,更多关于asp.net core中应用httpclient的资料请关注其它相关文章!