如何在C#中获取HTTP Post数据?

Alm*_*lma 44 c# asp.net http-post

我正在使用Mailgun API.我需要为他们提供一个URL,然后他们将向我发送HTTP一些数据.

我将此URL(http://test.com/MailGun/Webhook.aspx)提供给Mailgun,以便他们可以发布数据.我有一个他们发送的参数名称列表(收件人,域,IP,...).

我不确定如何在我的页面中发布该数据.在Webhook.aspx页面中,我尝试了一些代码如下,但所有代码都是空的.

 lblrecipient.text= Request.Form["recipient"];

 lblip.Text= Request.Params["ip"];

 lbldomain.Text = Request.QueryString["domain"];
Run Code Online (Sandbox Code Playgroud)

不确定要尝试获取发布的数据?

Jam*_*ruk 47

此代码将列出POST中发送的所有表单变量.这样,您可以查看是否具有post值的正确名称.

string[] keys = Request.Form.AllKeys;
for (int i= 0; i < keys.Length; i++) 
{
   Response.Write(keys[i] + ": " + Request.Form[keys[i]] + "<br>");
}
Run Code Online (Sandbox Code Playgroud)

  • @eloycm是的,fiddler在本地会很好,但听起来POST请求是从外部源进入服务器的. (6认同)

Fre*_*roy 39

此代码从HTTP请求中读取原始输入流.如果数据在Request.Form或其他模型绑定中不可用,或者您需要访问字节/文本,请使用此选项.

using(var reader = new StreamReader(Request.InputStream))
    content = reader.ReadToEnd();
Run Code Online (Sandbox Code Playgroud)


And*_*NET 8

您可以简单地使用Request["recipient"]"读取Web请求期间客户端发送的HTTP值"

要从QueryString,Form,Cookies或ServerVariables集合访问数据,您可以编写Request ["key"]

资料来源: MSDN

更新:总结对话

为了查看MailGun发布到您网站的值,您需要从MailGun正在制作的Web请求中读取它们,将它们记录在某处,然后在页面上显示它们.

您应该有一个端点,MailGun将发送POST值,另一个页面用于查看记录的值.

现在看来你有一页.因此,当您查看此页面并阅读请求值时,您正在读取您的请求中的值,而不是MailGun.