【问题标题】:How do I get raw request body using ASP.NET 4.0 Web Form如何使用 ASP.NET 4.0 Web 表单获取原始请求正文
【发布时间】:2020-07-07 06:08:51
【问题描述】:

我正在尝试在 ASP.NET 4.0 WebForm 中获取原始请求正文。
Request["param"]、Request.Form["param"]、Request.QueryString["param"] 不起作用。
知道如何获取此参数吗?

// API POST Request with this Request Body (raw-json)
    {
      "name" : "Apple",
      "image" : "https://upload.wikimedia.org/wikipedia/commons/thumb/1/15/Red_Apple.jpg/265px-Red_Apple.jpg",
      "price" : 35
    }

// API Server trying to get request body.

// didn't work. empty
Request["name"]
// didn't work. empty
Request.Form["name"]
// didn't work. empty
Request.QueryString["name"]

【问题讨论】:

  • 你究竟是如何发布参数的?来自 javascript?你能显示你的javascript调用吗?您想在哪里访问表单值?在代码隐藏中?
  • @Homungus 我附上了图片。
  • 这在我看来不像 WebForms :)。如果要获取 Request.Form 中的值,则需要将它们放入客户端的表单中。在您的情况下,当您使用邮递员时,请使用 form-data-tab 而不是 raw-tab 并将您的键值对放在那里。

标签: asp.net rest request


【解决方案1】:

您可以使用Request.InputStream

// include this in the top of your page to use JavaScriptSerializer and Hashtable
using System.Web.Script.Serialization;
using System.Collections;

...
using (var sr = new StreamReader(Request.InputStream))
{
    string body = sr.ReadToEnd();
    
    // Deserialize JSON to C# object
    // you can use some modern libs such as Newtonsoft JSON.NET instead as well
    JavaScriptSerializer serializer = new JavaScriptSerializer();
    Hashtable hashtable = serializer.Deserialize<Hashtable>(body);

    string name = hashtable["name"].ToString();
    string image = hashtable["image"].ToString();
    string price = hashtable["price"].ToString();

}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-27
    • 2019-01-07
    • 2013-09-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-08-14
    • 2020-11-09
    相关资源
    最近更新 更多