private void EndGetRequestStream(IAsyncResult ar) { HttpObsAsyncResult asyncResult = ar.AsyncState as HttpObsAsyncResult; HttpWebRequest webRequest = asyncResult.HttpWebRequest; ObsConfig obsConfig = asyncResult.HttpContext.ObsConfig; Stream data = asyncResult.HttpRequest.Content; if (data == null) { data = new MemoryStream(); } try { using (Stream requestStream = webRequest.EndGetRequestStream(ar)) { ObsCallback callback = delegate() { asyncResult.IsTimeout = false; }; if (!webRequest.SendChunked) { CommonUtil.WriteTo(data, requestStream, webRequest.ContentLength, obsConfig.BufferSize, callback); } else { CommonUtil.WriteTo(data, requestStream, obsConfig.BufferSize, callback); } } asyncResult.Continue(this.EndGetResponse); } catch (Exception e) { asyncResult.Abort(e); } }
private void BeginDoRequest(HttpObsAsyncResult asyncResult) { HttpRequest httpRequest = asyncResult.HttpRequest; HttpContext context = asyncResult.HttpContext; if (!context.SkipAuth) { this.GetSigner(context).DoAuth(httpRequest, context, this.GetIHeaders(context)); } if (!context.ObsConfig.KeepAlive && !httpRequest.Headers.ContainsKey(Constants.CommonHeaders.Connection)) { httpRequest.Headers.Add(Constants.CommonHeaders.Connection, "Close"); } HttpWebRequest request = HttpWebRequestFactory.BuildWebRequest(httpRequest, context); asyncResult.HttpWebRequest = request; asyncResult.HttpStartDateTime = DateTime.Now; if (httpRequest.Method == HttpVerb.PUT || httpRequest.Method == HttpVerb.POST || httpRequest.Method == HttpVerb.DELETE) { this.BeginSetContent(asyncResult); } else { asyncResult.Continue(this.EndGetResponse); } }