public static HttpWebRequest UploadDataAsync(Uri address, X509Certificate2 clientCert, string contentType, byte[] data, int millisecondsTimeout, OpenWriteEventHandler openWriteCallback, DownloadProgressEventHandler downloadProgressCallback, RequestCompletedEventHandler completedCallback) { // Create the request HttpWebRequest request = SetupRequest(address, clientCert); request.ContentLength = data.Length; if (!String.IsNullOrEmpty(contentType)) { request.ContentType = contentType; } request.Method = "POST"; // Create an object to hold all of the state for this request RequestState state = new RequestState(request, data, millisecondsTimeout, openWriteCallback, downloadProgressCallback, completedCallback); // Start the request for a stream to upload to IAsyncResult result = request.BeginGetRequestStream(OpenWrite, state); // Register a timeout for the request ThreadPool.RegisterWaitForSingleObject(result.AsyncWaitHandle, TimeoutCallback, state, millisecondsTimeout, true); return(request); }
public RequestState(HttpWebRequest request, byte[] uploadData, int millisecondsTimeout, OpenWriteEventHandler openWriteCallback, DownloadProgressEventHandler downloadProgressCallback, RequestCompletedEventHandler completedCallback) { Request = request; UploadData = uploadData; MillisecondsTimeout = millisecondsTimeout; OpenWriteCallback = openWriteCallback; DownloadProgressCallback = downloadProgressCallback; CompletedCallback = completedCallback; }
public static HttpWebRequest UploadDataAsync(Uri address, X509Certificate2 clientCert, string contentType, byte[] data, int millisecondsTimeout, OpenWriteEventHandler openWriteCallback, DownloadProgressEventHandler downloadProgressCallback, RequestCompletedEventHandler completedCallback) { // Create the request HttpWebRequest request = SetupRequest(address, clientCert); request.ContentLength = data.Length; if (!String.IsNullOrEmpty(contentType)) request.ContentType = contentType; request.Method = "POST"; // Create an object to hold all of the state for this request RequestState state = new RequestState(request, data, millisecondsTimeout, openWriteCallback, downloadProgressCallback, completedCallback); // Start the request for a stream to upload to IAsyncResult result = request.BeginGetRequestStream(OpenWrite, state); // Register a timeout for the request ThreadPool.RegisterWaitForSingleObject(result.AsyncWaitHandle, TimeoutCallback, state, millisecondsTimeout, true); return request; }