private string ProcessWebResponse(HttpWebResponse response) { if (response != null) { LastResponseInfo = new ResponseInfo() { StatusCode = response.StatusCode, ResponseURL = response.ResponseUri.OriginalString, Headers = response.Headers }; using (Stream responseStream = response.GetResponseStream()) using (StreamReader reader = new StreamReader(responseStream, Encoding.UTF8)) { LastResponseInfo.ResponseText = reader.ReadToEnd(); } return(LastResponseInfo.ResponseText); } return(null); }
private string ProcessError(Exception e, string requestURL) { string responseText = null; if (e != null) { StringBuilder sb = new StringBuilder(); sb.AppendLine("Error message:"); sb.AppendLine(e.Message); if (!string.IsNullOrEmpty(requestURL)) { sb.AppendLine(); sb.AppendLine("Request URL:"); sb.AppendLine(requestURL); } if (e is WebException webException) { try { using (HttpWebResponse webResponse = (HttpWebResponse)webException.Response) { ResponseInfo responseInfo = ProcessWebResponse(webResponse); if (responseInfo != null) { responseText = responseInfo.ResponseText; sb.AppendLine(); sb.AppendLine("Status code:"); sb.AppendLine($"({(int)responseInfo.StatusCode}) {responseInfo.StatusDescription}"); if (!string.IsNullOrEmpty(requestURL) && !requestURL.Equals(responseInfo.ResponseURL)) { sb.AppendLine(); sb.AppendLine("Response URL:"); sb.AppendLine(responseInfo.ResponseURL); } if (responseInfo.Headers != null) { sb.AppendLine(); sb.AppendLine("Headers:"); sb.AppendLine(responseInfo.Headers.ToString().TrimEnd()); } sb.AppendLine(); sb.AppendLine("Response text:"); sb.AppendLine(responseInfo.ResponseText); } } } catch (Exception nested) { DebugHelper.WriteException(nested, "ProcessError() WebException handler"); } } sb.AppendLine(); sb.AppendLine("Stack trace:"); sb.Append(e.StackTrace); string errorText = sb.ToString(); if (Errors == null) { Errors = new List <string>(); } Errors.Add(errorText); DebugHelper.WriteLine("Error:\r\n" + errorText); } return(responseText); }