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; } }