You can't read same response more than once, so you need to re-send request on every retry and than read from the response.
Below is how your HttpReturnJson
could look like for re-creating request (assuming just regular GET on known url):
public string HttpReturnJson(string url)
{
using (var request = WebRequest.Create(url))
using (WebResponse response = request.GetResponse())
using (var stream = response.GetResponseStream())
using (StreamReader reader = new StreamReader(stream))
{
string data = reader.ReadToEnd();
return data;
}
}
Note that if you need headers/post data you'll need to set those up too on every request.