Exemple #1
0
        private WebRequest CreatePostRequest(Uri uri)
        {
            var requestSetupComplete = new ManualResetEvent(false);

            WebRequest.RegisterPrefix(uri.AbsoluteUri, WebRequestCreator.ClientHttp);
            var initRequest = WebRequest.Create(uri) as HttpWebRequest;

            if (Headers != null)
            {
                initRequest.Headers = Headers;
            }

            initRequest.Headers = Headers;

            var postData = (RequestParameters == null) ? String.Empty : RequestParameters.Aggregate(
                String.Empty, (current, requestValue) =>
                current + string.Format("{0}={1}&",
                                        Uri.EscapeUriString(requestValue.Key),
                                        Uri.EscapeUriString(requestValue.Value)
                                        )
                ).TrimEnd('&');

            initRequest.Method      = "POST";
            initRequest.ContentType = "application/x-www-form-urlencoded";
            // TODO: Changed, in Xbox 360 implementation ContentLength doesn't exist.
            //initRequest.ContentLength = postData.Length;

            initRequest.BeginGetRequestStream(ar =>
            {
                var request    = (HttpWebRequest)ar.AsyncState;
                var postStream = request.EndGetRequestStream(ar);

                postStream.Write(Encoding.UTF8.GetBytes(postData), 0, postData.Length);
                postStream.Close();

                requestSetupComplete.Set();
            }, initRequest);

            requestSetupComplete.WaitOne();

            return(initRequest);
        }