c# - 参数 HTTP Post c#

标签 c# http http-post httpwebrequest webrequest

我正在制作一个 HTTP POST 方法来获取数据。我有一个想法来创建一个方法来获取特定的参数,但是当我不知道如何获取参数时。在 HTTP GET 中,参数在 URL 中,更容易获取参数。如何创建一种方法来获取 HTTP Post 中的所有数据?例如,在 PHP 中,当您显示 var $_POST 时,您会在正文中显示所有数据。我如何在 C# 中执行此操作?

我的方法是这样的:

[HttpPost]
[AllowAnonymous]
public IHttpActionResult Test()
{
// Get URL Args for example is 
var args = Request.RequestUri.Query;
// But if the arguments are in the body i don't have idea.
}

最佳答案

Web API 有一项功能,可以自动将发布的参数绑定(bind)到 Controller 内的操作。这叫做 Parameter Binding .它允许您简单地请求 URL 中的对象或 POST 请求的主体,并且它使用称为格式化程序的东西为您执行反序列化魔法。有一个用于 XML、JSON 和其他已知 HTTP 请求类型的格式化程序。

例如,假设我有以下 JSON:

{
    "SenderName": "David"
    "SenderAge": 35
}

我可以创建一个符合我的请求的对象,我们称之为SenderDetails:

public class SenderDetails
{
    public string SenderName { get; set; }
    public int SenderAge { get; set; }
}

现在,通过在我的 POST 操作中接收此对象作为参数,我告诉 WebAPI 尝试为我绑定(bind)该对象。如果一切顺利,我将获得可用的信息,而无需进行任何解析:

[Route("api/SenderDetails")]
[HttpPost]
public IHttpActionResult Test(SenderDetails senderDetails)
{
    // Here, we will have those details available, 
    // given that the deserialization succeeded.
    Debug.Writeline(senderDetails.SenderName);
}

关于c# - 参数 HTTP Post c#,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32451480/

相关文章:

ruby-on-rails - 使用 ruby​​ 2.5.3 在特定站点上发出获取请求时出现超时错误

bash - 从具有从给定位置到特殊字符的模式位置的文件中提取 bash 中的子字符串

java - 将细节字节数组从小程序发布到服务器

ajax - Extjs 4(下面有3.4的代码)下载从post请求返回的文件

c# - 如何在 C# 中管理依赖项?

scala - 使用 Dispatch 和 Scala 时如何打印 http 请求

c# - 以编程方式访问 TFS 历史记录

javax.net.ssl.SSLHandshakeException : Remote host closed connection during handshake exception

c# - 在 Windows x64 中从句柄获取可执行文件名

c# - 无法在 Linux 机器上为使用 MySQL db 和 Pomelo.EntityFrameworkCore.MySql 的 dot net core 2.1 应用程序运行 docker 镜像