Esempio n. 1
0
        private HttpResponseMessage TrySending(HttpRequestMessage request, HttpRequestMessageRequestDetails requestDetails, PipelineOptions options)
        {
            var adapter = _adapterFactory.CreateClient(options);
            HttpResponseMessage response;

            try
            {
                response = adapter.SendAsync(request).Result;
            }
            catch (AggregateException exception)
            {
                if (SendError != null)
                {
                    requestDetails = requestDetails ?? new HttpRequestMessageRequestDetails(request);
                    SendError(this, new RequestErrorEventArgs(requestDetails, exception.InnerException));
                }
                if (exception.InnerException is TaskCanceledException)
                {
                    throw new TimeoutException("The request timed out");
                }
                throw exception.InnerException;
            }

            if (Responded != null)
            {
                requestDetails = requestDetails ?? new HttpRequestMessageRequestDetails(request);
                Responded(this, new ResponseEventArgs(requestDetails, new HttpResponseMessageResponseDetails(requestDetails, response)));
            }
            ApplyPipelineToResponse(response, options);
            options.AssertAllRequestResponseOptionsWereUsed();
            return(response);
        }