c# - 如何查看HTTPRequest信息

标签 c# asp.net http

我正在设计一个网络界面,负责与硬件进行通信。硬件联系网页并使用 POST 发送 HTTP 请求,其中包含使用“key=value”格式的 http 包正文中的特定数据。

服务器端我有执行以下操作的代码:

public override void ProcessRequest(HttpContext curContext)
    {
        if (curContext != null)
        {
            HttpResponse response = curContext.Response;
            response.Clear();
            response.ContentType = "text/plain";
            response.BufferOutput = true;
            response.StatusCode = 200; // HttpStatusCode.OK;
            response.Write(response.StatusCode.ToString());
            response.End();
        }
    }

但我真正需要的是检查正文和检索数据(文本/纯格式)所需的代码。我对这种类型的 Web 编程相当陌生,因此我不知道要编写哪些代码来在 curContext 中查找以获取此信息,或者我什至不知道我的覆盖方法是否正确。

我本来希望有一些可用的东西,比如 curContext.Request.Body,但事实并非如此。如何查看请求正文中的原始 POST 数据?谁能指出我正确的方向?

谢谢

最佳答案

您需要使用InputStream propertyHttpRequest instanceRequest property 返回由 HttpContext 曝光传递给您的 ProcessRequest 方法。

这将为您提供 POST 请求的内容(您可以通过在同一 HttpRequest 上调用 HttpMethod property 来验证)。

请注意,您必须使用 StreamReader为了将字节流转换为字符串,然后进行解码(因为这些键/值对应该是 url 编码的)。

幸运的是,这已经为您完成了。在 HttpRequest 实例上,您可以使用 NameValueCollectionForm property 返回使用 url 编码的键/值对检查作为 POST 请求的一部分传递的值,如下所示:

public override void ProcessRequest(HttpContext curContext)
{
    if (curContext != null) return;

    string value = curContext.Form["key"];

    // Do other processing.
    ...

请注意,您还可以使用indexer on the HttpRequest ,但这结合了 QueryString 公开的所有内容 , 表单, Cookies ServerVariables我想说在这种情况下的集合是一个坏主意,因为您专门发布信息并期望在另一边。

关于c# - 如何查看HTTPRequest信息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9691525/

相关文章:

c# - 从 ASP.Net NULL 值输入到 MySQL

.NET HTTP 处理程序——如何发送自定义响应?

c# - AZMan:InitializeClientContextFromName 失败,返回 "Value does not fall within the expected range."

c# - 在 switch 语句中的默认情况下抛出 NotImplementedException

.net - 亚音速ActiveRecord和外键属性名称

http - 在单个 VM 中提供两个用 Google Go 编写的网站

http - 如何获取http文件元数据?

c# - AutoMapper 给出无效操作异常

c# - 在动态表的 RadioButton CheckedChanges 中添加新的事件处理程序

c# - 在后台线程上 c# 中出现未经授权的错误