public static HttpResponse GetResponseFromServer(WebRequest request)
 {
     using (var response = (WebResponse)request.GetResponse())
     {
         var httpResponse = new HttpResponse(response);
         using (var dataStream = response.GetResponseStream())
         {
             if (dataStream != null)
             {
                 using (var reader = new StreamReader(dataStream))
                 {
                     var data = reader.ReadToEnd();
                     httpResponse.Data = data;
                 }
             }
         }
         return httpResponse;
     }
 }
 private void Notify(Guid messageId, HttpResponse response)
 {
     var trace = new WebMessageTrace(messageId)
     {
         Messages = new List<WebMessage>
         {
             new WebMessage(WebMessageType.Response)
             {
                 Details = response.Data,
                 Headers = HttpWebRequestHelper.GetHeaders(response.Headers)
             }
         }
     };
     Publish(trace);
 }
        private void Notify(Guid messageId, HttpRequest request, HttpResponse response, Exception exception)
        {
            var trace = new WebMessageTrace(messageId);

            if(response!= null)
                trace.Messages.Add(
                    new WebMessage(WebMessageType.Response)
                    {
                        Details = response.Data,
                        Headers = HttpWebRequestHelper.GetHeaders(response.Headers),
                        Timestamp = DateTime.UtcNow
                    });

            if (request != null)
            {
                trace.Server = request.Server;
                trace.Messages.Add(
                        new WebMessage(WebMessageType.Request)
                        {
                            Details = request.Data,
                            Headers = HttpWebRequestHelper.GetHeaders(request.Headers),
                            Method = request.Request.Method,
                            AbsolutePath = request.Request.RequestUri.AbsolutePath,
                            Timestamp = request.Timestamp
                        });
            }
            if(exception!= null)
               trace.Messages.Add(
                    new WebMessage(WebMessageType.Error)
                    {
                        Details = string.Format("Message - {0} Stack Trace - {1}", exception.Message , exception.StackTrace),
                        Headers = exception.GetType() == typeof(WebException) && ((WebException)exception).Response != null ? HttpWebRequestHelper.GetHeaders(((WebException)exception).Response.Headers) : new Dictionary<string, string>(),
                        Timestamp = DateTime.UtcNow
                    });

            Publish(trace);
        }