我正在设计一个网络界面,负责与硬件进行通信。硬件联系网页并使用 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
property上HttpRequest
instance由 Request
property 返回由 HttpContext
曝光传递给您的 ProcessRequest
方法。
这将为您提供 POST
请求的内容(您可以通过在同一 HttpRequest
上调用 HttpMethod
property 来验证)。
请注意,您必须使用 StreamReader
为了将字节流转换为字符串,然后进行解码(因为这些键/值对应该是 url 编码的)。
幸运的是,这已经为您完成了。在 HttpRequest
实例上,您可以使用 NameValueCollection
由 Form
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/