How to HTTP POST a document to a BizTalk Receive Location

I've been looking for this sample code on my hard drive again today.

It will be easier to find it on my blog J

Here it is:

        /// <summary>

        /// Sends a document via Http POST

        /// </summary>

        /// <param name="url">URL to send to</param>

        /// <param name="body">content to send</param>

        public static string SendViaHttpPost(string url, string body)

        {

            StringBuilder response = new StringBuilder();

            WebResponse result = null;

 

            try

            {

                WebRequest req = WebRequest.Create(url);

                req.Method = "POST";

                req.ContentType = "text/xml; charset=utf-8";

                req.Credentials = System.Net.CredentialCache.DefaultCredentials; // use current user credentials

                byte[] someBytes = null;

 

                someBytes = Encoding.UTF8.GetBytes(body);

                

                req.ContentLength = someBytes.Length;

                Stream newStream = req.GetRequestStream();

                newStream.Write(someBytes, 0, someBytes.Length);

                newStream.Close();

 

                result = req.GetResponse();

                Stream ReceiveStream = result.GetResponseStream();

                Encoding encode = System.Text.Encoding.GetEncoding("utf-8");

                StreamReader sr = new StreamReader( ReceiveStream, encode );

                Char[] read = new Char[256];

                int count = sr.Read( read, 0, 256 );

                while (count > 0)

                {

                    String str = new String(read, 0, count);

                    response.Append(str);

                    count = sr.Read(read, 0, 256);

                }

            }

            finally

            {

                if ( result != null )

                {

                    result.Close();

                }

            }

            return response.ToString();

        }