public string ReadResponseString()
{
if (SkipServerCheck)
{
var result = factory.GetCachedResponse(this);
factory.InvokeLogRequest(owner, new RequestResultArgs
{
DurationMilliseconds = CalculateDuration(),
Method = webRequest.Method,
HttpResult = (int)ResponseStatusCode,
Status = RequestStatus.AggresivelyCached,
Result = result,
Url = webRequest.RequestUri.PathAndQuery,
PostedData = postedData
});
return result;
}
int retries = 0;
while(true)
{
try
{
return ReadStringInternal(webRequest.GetResponse);
}
catch (WebException e)
{
if (++retries >= 3)
throw;
var httpWebResponse = e.Response as HttpWebResponse;
if (httpWebResponse == null ||
httpWebResponse.StatusCode != HttpStatusCode.Unauthorized)
throw;
if(HandleUnauthorizedResponse(httpWebResponse) == false)
throw;
}
}
}