参数HTTP Post c#

时间:2015-09-08 07:16:12

标签: 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.
}

2 个答案:

答案 0 :(得分:3)

Web API具有自动绑定发布到控制器内的操作的参数的功能。这称为Parameter Binding。它允许您简单地请求URL内部的对象或POST请求的主体,并使用名为Formatters的东西为您执行反序列化魔术。有一个XML,JSON格式化程序和其他已知的HTTP请求类型。

例如,假设我有以下JSON:

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

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

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

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

[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);
}

答案 1 :(得分:0)

如果我正确地告诉你,在C#中你使用[HttpPost]属性来公开post方法。

[HttpPost]
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.
}