private string ReadStringInternal(Func<WebResponse> getResponse)
{
WebResponse response;
try
{
response = getResponse();
}
catch (WebException e)
{
var httpWebResponse = e.Response as HttpWebResponse;
if (httpWebResponse == null ||
httpWebResponse.StatusCode == HttpStatusCode.NotFound ||
httpWebResponse.StatusCode == HttpStatusCode.Conflict)
throw;
using (var sr = new StreamReader(e.Response.GetResponseStream()))
{
throw new InvalidOperationException(sr.ReadToEnd(), e);
}
}
ResponseHeaders = response.Headers;
ResponseStatusCode = ((HttpWebResponse) response).StatusCode;
using (var responseString = response.GetResponseStream())
{
var reader = new StreamReader(responseString);
var text = reader.ReadToEnd();
reader.Close();
return text;
}
}