public static object ProcessHostError(string errorMessage, XmlHttpRequest xmlHttpRequest) { var xmlHttpResponse = new XmlHttpResponse { transactionId = xmlHttpRequest != null ? xmlHttpRequest.transactionId : null, status = 502, responseText = errorMessage }; xmlHttpResponse.headers.Add("content-type", "text/plain"); return xmlHttpResponse; }
private static XmlHttpResponse ProcessResponse(string transactionId, HttpWebRequest webRequest) { Debug.Assert(string.IsNullOrWhiteSpace(transactionId) == false && webRequest != null); HttpWebResponse webResponse; var stopWatch = new Stopwatch(); stopWatch.Start(); try { webResponse = (HttpWebResponse)webRequest.GetResponse(); } catch (WebException webException) { webResponse = (HttpWebResponse)webException.Response; } stopWatch.Stop(); Debug.WriteLine("webRequest only - elapsed Time: " + stopWatch.ElapsedMilliseconds + ", id: " + transactionId); var xmlHttpResponse = new XmlHttpResponse { transactionId = transactionId, status = (int)webResponse.StatusCode }; foreach (var headerName in webResponse.Headers.AllKeys) { var lowerHeaderName = headerName.ToLowerInvariant(); if (xmlHttpResponse.headers.ContainsKey(lowerHeaderName)) { xmlHttpResponse.headers[lowerHeaderName] = xmlHttpResponse.headers[lowerHeaderName] + "," + webResponse.Headers[headerName]; } else { xmlHttpResponse.headers[lowerHeaderName] = webResponse.Headers[headerName]; } } xmlHttpResponse.responseText = string.Empty; var readBuffer = new byte[102400]; using (var memoryStream = new MemoryStream()) { var responseStream = webResponse.GetResponseStream(); if (responseStream != null) { int bytesRead = responseStream.Read(readBuffer, 0, readBuffer.Count()); while (bytesRead > 0) { memoryStream.Write(readBuffer, 0, bytesRead); bytesRead = responseStream.Read(readBuffer, 0, readBuffer.Count()); } if (memoryStream.Length > 0) { xmlHttpResponse.responseText = Encoding.UTF8.GetString(memoryStream.ToArray()); } } } return xmlHttpResponse; }