int retries = 0;
bool retry = false;
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("http://alski.net");
HttpWebResponse response = null;
do
{
try
{
Console.WriteLine("Attempt " + retries.ToString());
response = (HttpWebResponse)request.GetResponse();
Console.WriteLine("Success");
}
catch (WebException wex)
{
Console.WriteLine(wex.Message);
if ( ((HttpWebResponse)wex.Response).StatusCode == HttpStatusCode.ProxyAuthenticationRequired)
{
//Can't change proxy after request has been submitted so we recreate the request
request = (HttpWebRequest)WebRequest.Create(request.RequestUri);
switch (retries++)
{
case 0:
retry = true;
request.Proxy = WebRequest.GetSystemWebProxy();
break;
case 1:
case 2:
case 3:
request.Proxy = WebRequest.DefaultWebProxy;
//Show form to ask for credentials and maybe change proxy
request.Proxy.Credentials = new NetworkCredential("user", "passsword");
break;
default:
retry = false;
break;
}
}
}
}
while (response == null
&& retry);