CSharpAnalytics.Network.BackgroundHttpWebRequester.RequestWithFailureRetry C# (CSharp) Method

RequestWithFailureRetry() protected method

Request the URI with retry logic using HttpWebRequest.
protected RequestWithFailureRetry ( Uri requestUri, CancellationToken cancellationToken ) : void
requestUri System.Uri URI to request.
cancellationToken System.Threading.CancellationToken CancellationToken to indicate if the request should be cancelled.
return void
        protected override void RequestWithFailureRetry(Uri requestUri, CancellationToken cancellationToken)
        {
            var retryDelay = TimeSpan.Zero;
            var successfullySent = false;

            do
            {
                var request = CreateRequest(requestUri);
                if (preprocessor != null)
                    preprocessor(request);

                HttpWebResponse response = null;
                try
                {
                    response = (HttpWebResponse)request.GetResponse();
                }
                catch (Exception ex)
                {
                    if (ex is AggregateException)
                        ex = GetInnermostException(ex);

                    Debug.WriteLine("{0} failing with {1}", GetType().Name, ex.Message);
                }
                finally
                {
                    if (response == null || response.StatusCode != HttpStatusCode.OK)
                    {
                        WaitBetweenFailedRequests(ref retryDelay);
                    }
                    else
                    {
                        successfullySent = true;
                    }
                }
            } while (!successfullySent);
        }