Create a gist now

Instantly share code, notes, and snippets.

What would you like to do?
How to get the body of a HTTP Request using C#
private string GetDocumentContents(System.Web.HttpRequestBase Request)
{
string documentContents;
using (Stream receiveStream = Request.InputStream)
{
using (StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8))
{
documentContents = readStream.ReadToEnd();
}
}
return documentContents;
}
@ghost

ghost commented Oct 22, 2013

nice!

Thank you so much ... you saved my lots of time.

very nice snippet!

Marklsq commented Feb 15, 2017

Thank you,but how to get the full body has finished loading the JS code.

You sould use the Request.ContentEncoding

private string GetDocumentContents(HttpRequestBase Request)
        {
            string documentContents;
            using (Stream receiveStream = Request.InputStream)
            {
                using (StreamReader readStream = new StreamReader(receiveStream, Request.ContentEncoding))
                {
                    documentContents = readStream.ReadToEnd();
                }
            }
            return documentContents;
        }

I am using this code inside a specflow step definiton to capture the body of http request like below.
but I am getting error. Can anybody help?
binding error: Parameter count mismatch! The binding method 'TestFeature.WhenBrowserPayLoadIsExtracted(HttpRequestBase)' should have 0 parameters

[When(@"Browser payload is extracted")]
private string WhenBrowserPayLoadIsExtracted(HttpRequestBase Request)
{
string documentContents;
using (Stream receiveStream = Request.InputStream)
{
using (StreamReader readStream = new StreamReader(receiveStream, Encoding.UTF8))
{
documentContents = readStream.ReadToEnd();
}
}
return documentContents;

    }
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment