检索包含XML的HTTP POST请求

nub*_*bme 3 c# xml iis post http

我需要设置一个通过HTTP POST侦听XML文档的网页.我不需要POST,我需要接收POST.这是什么对象?我应该使用HTTP处理程序,Web服务,webRequest,Stream还是其他什么?我需要使用IIS服务器而不喜欢C#.

我试过了...

  1. 我不认为我可以使用WebRequest,因为我没有发送请求,只是等待它们.

  2. "HttpRequest.InputStream",但我不确定如何使用它或放在哪里.我是否需要将其与Web服务或asp.net应用程序一起使用?我把它放在 http://forums.asp.net/t/1371873.aspx/1

  3. 我尝试过一个简单的网络服务http://msdn.microsoft.com/en-us/library/bb412178.aspx - 但是当我尝试访问"http:// localhost:8000/EchoWithGet?s = Hello,world !",我得到一个"无法找到网页错误"

如果有人有任何有用的代码或链接将是伟大的!

编辑:我正在尝试接收来自其他程序的通知.

Dar*_*rov 13

您可以编写一个将在IIS中托管的ASP.NET应用程序,您可以在其中使用.ASPX页面或通用.ASHX处理程序(取决于您希望如何格式化结果 - 是否要返回HTML或某些内容)其他类型)然后读取Request.InputStream将包含来自客户端的请求的主体.

这是一个如何编写通用处理程序(MyHandler.ashx)的示例:

public class MyHandler : IHttpHandler
{
    public void ProcessRequest(HttpContext context)
    {
        var stream = context.Request.InputStream;
        byte[] buffer = new byte[stream.Length];
        stream.Read(buffer, 0, buffer.Length);
        string xml = Encoding.UTF8.GetString(buffer);

        ... do something with the XML

        // We only set the HTTP status code to 202 indicating to the
        // client that the request has been accepted for processing
        // but we leave an empty response body
        context.Response.StatusCode = 202;
    }

    public bool IsReusable
    {
        get
        {
            return false;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)