private void TransferHeaders(CTWebRequest request, ContractTestHttpClientResponse response)
        {
            if (request.ResponseHeaders == null) return;

            response.Headers = new Dictionary<string, string>(request.ResponseHeaders.Count);
            foreach (var key in request.ResponseHeaders.AllKeys)
            {
                response.Headers.Add(key, request.ResponseHeaders[key]);
            }
        }
 private void ProcessUnknownException(Exception exception, ContractTestHttpClientResponse httpClientResponse, string uri)
 {
     httpClientResponse.StatusCode = HttpStatusCode.BadRequest;
     httpClientResponse.Response = exception.StackTrace;
 }
        private void ProcessWebException(WebException exception, string uri, ContractTestHttpClientResponse httpClientResponse)
        {
            httpClientResponse.StatusCode = HttpStatusCode.InternalServerError;

            var webResponse = exception.Response;
            if (webResponse == null) return;

            var responseStream = webResponse.GetResponseStream();
            if (null != responseStream)
            {
                using (var reader = new StreamReader(responseStream))
                {
                    try
                    {
                        httpClientResponse.Response = reader.ReadToEnd();
                    }
                    catch (Exception e)
                    {
                        //TODO : Need to figure out the real cause
                    }
                }
            }

            var httpWebResponse = webResponse as HttpWebResponse;
            if (httpWebResponse != null)
                httpClientResponse.StatusCode = httpWebResponse.StatusCode;
        }
 private ContractTestHttpClientResponse ExecuteRequest(
     ContractTestHttpClientResponse response,
     string uri,
     string httpMethod,
     Action<CTWebRequest> action)
 {
     using (var webRequest = new CTWebRequest(timeOutMillionSeconds))
     {
         try
         {
             AddHeaders(webRequest);
             action(webRequest);
         }
         catch (WebException ex)
         {
             ProcessWebException(ex, uri, response);
         }
         catch (Exception exception)
         {
             ProcessUnknownException(exception, response, uri);
         }
         TransferHeaders(webRequest, response);
         return response;
     }
 }