Od czasu do czasu gdy pobieram stronę, serwer zwraca "Gateway Timeout." bądź "Bad Gateway", czy istnieje możliwość jakoś zapętlić część kodu żeby próbował pobrać stronę aż błąd serwera zniknie?
Tak.
Widzę inteligentne odpowiedzi ;) Skoro tak, to w jaki sposób, używam WebClienta
W kodzie strony powinno pisać: "502 Bad Gateway" albo coś w tym stylu, więc wykorzystaj Regular Expressions. Jak znajdzie Bad geja w kodzie strony, to spróbuj otworzyć stronę ponownie. Jeżeli nie znajdzie badgeja, to wychodzisz z pętli.
Tyle, że mi program crashuje na debugu ;/ podświetla kod, w którym pobierana jest strona więc regexpem nie podejdzie.
czyli masz tam chyba jakis blad i pwinienes go tu wkleic prawda ?? jak potrzmujesz pomicy.
client.DownloadString(string.Concat(new object[] { strona, "/menu.php" }));
Tutaj nie ma błędu, przecież błędy 5xx są generowane po stronie serwera i właśnie dzieje się to od czasu do czasu, jak trafie to crash programu :D Nawet czasami jak odświeżę ręcznie stronę w przeglądarce pokaże mi błąd. Pewnie sposób "na szybko" wyglądałby tak:
bool sprawdz = true;
do
{
try
{
client.DownloadString(string.Concat(new object[] { strona, "/menu.php" }));
}
catch
{
sprawdz = false;
}
} while (sprawdz == false);
To jest calkiem poprawny sposob...
Skoro taki kod jest dobry, to zamieszcze poprawną wersje(w tej wyżej w przypadku błędu - pętla nieskończona), może komuś się przyda :P
bool sprawdz;
do
{
try
{
client.DownloadString(string.Concat(new object[] { strona, "/menu.php" }));
sprawdz = true;
}
catch
{
sprawdz = false;
}
} while (sprawdz == false);
Dzięki
Tutaj tez petla nieskonczona. Przydaloby sie ustawic limit prob.