public static HttpResponse GetResponse(HttpRequest request) { HttpWebRequest httpWebRequest = GetWebRequest(request); HttpResponse httpResponse = new HttpResponse(httpWebRequest.RequestUri.AbsoluteUri); HttpWebResponse httpWebResponse = null; try { httpWebResponse = (HttpWebResponse)httpWebRequest.GetResponse(); } catch (WebException ex) { httpWebResponse = (HttpWebResponse)ex.Response; } PasrseHttpResponse(httpResponse, httpWebResponse); return httpResponse; }
private static void PasrseHttpResponse(HttpResponse httpResponse, HttpWebResponse httpWebResponse) { httpResponse.Content = ReadContent(httpResponse, httpWebResponse); httpResponse.Status = (int)httpWebResponse.StatusCode; httpResponse.Headers = new Dictionary<string, string>(); httpResponse.Method = ParameterHelper.StringToMethodType(httpWebResponse.Method); foreach (var key in httpWebResponse.Headers.AllKeys) { httpResponse.Headers.Add(key, httpWebResponse.Headers[key]); } string type = httpResponse.Headers["Content-Type"]; if (null != type) { httpResponse.Encoding = "UTF-8"; string[] split = type.Split(';'); httpResponse.ContentType = ParameterHelper.StingToFormatType(split[0].Trim()); if (split.Length > 1 && split[1].Contains("=")) { string[] codings = split[1].Split('='); httpResponse.Encoding = codings[1].Trim().ToUpper(); } } }
public static byte[] ReadContent(HttpResponse response, HttpWebResponse rsp) { MemoryStream ms = new MemoryStream(); byte[] buffer = new byte[bufferLength]; Stream stream = rsp.GetResponseStream(); while (true) { int length = stream.Read(buffer, 0, bufferLength); if (length == 0) { break; } ms.Write(buffer, 0, length); } ms.Seek(0, SeekOrigin.Begin); byte[] bytes = new byte[ms.Length]; ms.Read(bytes, 0, bytes.Length); ms.Close(); ms.Dispose(); stream.Close(); stream.Dispose(); return bytes; }