如何查看HTTPRequest信息

时间:2012-03-13 20:24:45

标签: c# asp.net http

我正在设计一个负责与硬件通信的Web界面。硬件联系网页并使用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();
        }
    }

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

我期待有像curContext.Request.Body这样的东西,但事实并非如此。如何在请求正文中查看原始POST数据?有人能指出我正确的方向吗?

由于

2 个答案:

答案 0 :(得分:2)

您希望使用传递给ProcessRequest方法的InputStream property所公开的HttpRequest instance返回的Request property上的HttpContext

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

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

幸运的是,这已经为您完成了。在HttpRequest实例上,您可以使用NameValueCollection返回的Form property来检查作为POST请求的一部分传递的值,其中包含url编码的键/值对像这样:

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

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

    // Do other processing.
    ...

请注意,您还可以使用indexer on the HttpRequest,但它结合了QueryStringFormCookies 所展示的所有 我在这种情况下会说的 ServerVariables集合是一个坏主意,因为你专门发布信息并期望在另一边。

答案 1 :(得分:0)

如果您以“key = value”格式将数据放入请求正文中,则听起来您是URL编码表单数据(只要您使用&符号来区分键/值对(&) )。

如果是这种情况,您应该可以使用:

curContext.Request["key"]

它会在你的例子中给你“价值”。