Example #1
0
        /// <summary>
        ///     Dumps the specified request include headers.
        /// </summary>
        /// <param name="httpRequest">The HTTP request.</param>
        /// <param name="includeHeaders">if set to <c>true</c> [include headers].</param>
        /// <returns>System.String.</returns>
        public static string Dump(this HttpRequest httpRequest, bool includeHeaders = true)
        {
            MemoryStream memoryStream = new MemoryStream();

            try
            {
                TextWriter writer = new StreamWriter(memoryStream);

                writer.Write(httpRequest.Method);
                writer.Write(httpRequest.HttpContext.Request.GetDisplayUrl());

                // headers

                if (includeHeaders)
                {
                    if (httpRequest.AsDynamic()._wr != null)
                    {
                        // real request -- add protocol
                        writer.Write(" " + httpRequest.AsDynamic()._wr.GetHttpVersion() + "\r\n");

                        // headers
                        writer.Write(httpRequest.AsDynamic().CombineAllHeaders(true));
                    }
                    else
                    {
                        // manufactured request
                        writer.Write("\r\n");
                    }
                }

                writer.Write("\r\n");
                writer.Flush();

                // entity body

                dynamic httpInputStream = httpRequest.AsDynamic().InputStream;
                httpInputStream.WriteTo(memoryStream);

                StreamReader reader = new StreamReader(memoryStream);
                return(reader.ReadToEnd());
            }
            finally
            {
                memoryStream.Close();
            }
        }