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); }