Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Retrieve HTTP POST request containing XML

Tags:

c#

http

post

xml

iis

I need to setup a web page that listens for XML document via an HTTP POST. I don't need to POST out, I need to receive that POST. What object does this? Should I use an HTTP handler, web service, webRequest, Stream or something else? I need to use a IIS Server and prefer C#.

I've Tried...

  1. I dont think I can use WebRequest since I'm not sending a request, just waiting for them.

  2. "HttpRequest.InputStream" but I'm not sure how to use it or where to put it. Do i need to use it with a web service or a asp.net application? I put it in http://forums.asp.net/t/1371873.aspx/1

  3. I've tried a simple web service http://msdn.microsoft.com/en-us/library/bb412178.aspx - But when i try to visit "http://localhost:8000/EchoWithGet?s=Hello, world!", i get a "webpage cannot be found error"

If anyone has any helpful code or links that would be great!

EDIT: I am trying to receive notifications from another program.

like image 220
nubme Avatar asked May 14 '26 20:05

nubme


1 Answers

You could write an ASP.NET application that you will host in IIS in which you could either have an .ASPX page or a generic .ASHX handler (depending on how you want the result to be formatted - do you want to return HTML or some other type) and then read the Request.InputStream which will contain the body of the request that comes from the client.

Here's an example of how you could write a generic handler (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;
        }
    }
}
like image 115
Darin Dimitrov Avatar answered May 17 '26 08:05

Darin Dimitrov



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!