public async Task <HttpResponseMessage> ExecuteRequestAsync(ODataRequest request, CancellationToken cancellationToken) { HttpConnection httpConnection = null; try { httpConnection = _session.Settings.RenewHttpConnection ? new HttpConnection(_session.Settings) : _session.GetHttpConnection(); PreExecute(httpConnection.HttpClient, request); _session.Trace("{0} request: {1}", request.Method, request.RequestMessage.RequestUri.AbsoluteUri); #if TRACE_REQUEST_CONTENT if (request.RequestMessage.Content != null) { var content = await request.RequestMessage.Content.ReadAsStringAsync(); _session.Trace("Request content:{0}{1}", Environment.NewLine, content); } #endif var response = await httpConnection.HttpClient.SendAsync(request.RequestMessage, cancellationToken); if (cancellationToken.IsCancellationRequested) { cancellationToken.ThrowIfCancellationRequested(); } _session.Trace("Request completed: {0}", response.StatusCode); #if TRACE_RESPONSE_CONTENT if (response.Content != null) { var content = await response.Content.ReadAsStringAsync(); _session.Trace("Response content:{0}{1}", Environment.NewLine, content); } #endif await PostExecute(response); return(response); } catch (WebException ex) { throw WebRequestException.CreateFromWebException(ex); } catch (AggregateException ex) { if (ex.InnerException is WebException) { throw WebRequestException.CreateFromWebException(ex.InnerException as WebException); } else { throw; } } finally { if (httpConnection != null && _session.Settings.RenewHttpConnection) { httpConnection.Dispose(); } } }
public async Task <HttpResponseMessage> ExecuteRequestAsync(ODataRequest request, CancellationToken cancellationToken) { HttpConnection httpConnection = null; try { await PreExecuteAsync(request).ConfigureAwait(false); _session.Trace("{0} request: {1}", request.Method, request.RequestMessage.RequestUri.AbsoluteUri); if (request.RequestMessage.Content != null && (_session.Settings.TraceFilter & ODataTrace.RequestContent) != 0) { var content = await request.RequestMessage.Content.ReadAsStringAsync().ConfigureAwait(false); _session.Trace("Request content:{0}{1}", Environment.NewLine, content); } HttpResponseMessage response; if (_session.Settings.RequestExecutor != null) { response = await _session.Settings.RequestExecutor(request.RequestMessage); } else { httpConnection = _session.Settings.RenewHttpConnection ? new HttpConnection(_session.Settings) : _session.GetHttpConnection(); response = await httpConnection.HttpClient.SendAsync(request.RequestMessage, cancellationToken).ConfigureAwait(false); if (cancellationToken.IsCancellationRequested) { cancellationToken.ThrowIfCancellationRequested(); } } _session.Trace("Request completed: {0}", response.StatusCode); if (response.Content != null && (_session.Settings.TraceFilter & ODataTrace.ResponseContent) != 0) { var content = await response.Content.ReadAsStringAsync().ConfigureAwait(false); _session.Trace("Response content:{0}{1}", Environment.NewLine, content); } await PostExecute(response).ConfigureAwait(false); return(response); } catch (WebException ex) { throw WebRequestException.CreateFromWebException(ex); } catch (AggregateException ex) { if (ex.InnerException is WebException) { throw WebRequestException.CreateFromWebException(ex.InnerException as WebException); } else { throw; } } finally { if (httpConnection != null && _session.Settings.RenewHttpConnection) { httpConnection.Dispose(); } } }