C#如何从context.Request.InputStream获取POST表单值

时间:2017-07-25 06:10:14

标签: c# http parsing post

我想使用c#创建一个应用程序,它可以接收任何发送给它的帖子。 例如,当我从html发布<input name="inp1" type="text" value="something">时,它应该将inp1作为内容。 到目前为止,我一直在寻找每一个问题,并让我接受了这个问题。

    private void ProcessRequest(HttpListenerContext context)
            {
                // Get the data from the HTTP stream
                var body = new StreamReader(context.Request.InputStream).ReadToEnd();

                byte[] b = Encoding.UTF8.GetBytes("ACK");
                context.Response.StatusCode = 200;
                context.Response.KeepAlive = false;

                NameValueCollection coll = HttpUtility.ParseQueryString(body);
                Debug.Write(body);
}

这是输出:

------WebKitFormBoundaryDykOSF9gSjwBSbS2
Content-Disposition: form-data; name="inp1"

something
------WebKitFormBoundaryDykOSF9gSjwBSbS2--

如何获得像"form["inp1"] = something"

这样纯净的东西

1 个答案:

答案 0 :(得分:2)

不是丢弃col1,而是使用它来获取集合中的所有键和值,并将它们格式化为字符串以进行输出。这是一个例子:

 NameValueCollection coll = HttpUtility.ParseQueryString(body);
 var response = new StringBuilder();
 foreach (var key in col1.AllKeys)
 {
     response.Append(String.Format(@"form[""{0}""] = {1}\r\n", key, col1[key]));  //Edit the format string to taste
 }
 Debug.Write(response.ToString());