private HttpResponse GetResponseAndSaveFile(HttpWebRequest request, string fileSavePath) { var response = new HttpResponse(); response.ResponseStatus = ResponseStatus.None; try { var webResponse = GetRawResponse(request); using (webResponse) { response.ContentType = webResponse.ContentType; response.ContentLength = webResponse.ContentLength; response.ContentEncoding = webResponse.ContentEncoding; response.StatusCode = webResponse.StatusCode; response.StatusDescription = webResponse.StatusDescription; response.ResponseUri = webResponse.ResponseUri; response.Server = webResponse.Server; response.ResponseStatus = ResponseStatus.Completed; using (Stream output = File.OpenWrite(fileSavePath)) using (Stream input = webResponse.GetResponseStream()) { byte[] buffer = new byte[8 * 1024]; int len; while ((len = input.Read(buffer, 0, buffer.Length)) > 0) { output.Write(buffer, 0, len); } output.Close(); } foreach (var headerName in webResponse.Headers.AllKeys) { var headerValue = webResponse.Headers[headerName]; response.Headers.Add(new HttpHeader { Name = headerName, Value = headerValue }); } webResponse.Close(); } } catch (Exception ex) { response.ErrorMessage = ex.Message; response.ResponseStatus = ResponseStatus.Error; } return response; }
private HttpResponse GetResponse(HttpWebRequest request) { var response = new HttpResponse(); response.ResponseStatus = ResponseStatus.None; try { var webResponse = GetRawResponse(request); using (webResponse) { response.ContentType = webResponse.ContentType; response.ContentLength = webResponse.ContentLength; response.ContentEncoding = webResponse.ContentEncoding; response.ResponseStream = webResponse.GetResponseStream(); response.StatusCode = webResponse.StatusCode; response.StatusDescription = webResponse.StatusDescription; response.ResponseUri = webResponse.ResponseUri; response.Server = webResponse.Server; response.ResponseStatus = ResponseStatus.Completed; using (StreamReader reader = new StreamReader(response.ResponseStream)) { response.Content = reader.ReadToEnd(); } foreach (var headerName in webResponse.Headers.AllKeys) { var headerValue = webResponse.Headers[headerName]; response.Headers.Add(new HttpHeader { Name = headerName, Value = headerValue }); } webResponse.Close(); } } catch (Exception ex) { response.ErrorMessage = ex.Message; response.ResponseStatus = ResponseStatus.Error; } return response; }