Mamy narzędzie, które sprawdza, czy dany URL jest aktywnym adresem URL. Jeśli dany adres URL jest dostępny, inna część naszego oprogramowania może skasować zawartość z niego.Błąd "Serwer zdalny zwrócił błąd: (403) Zabroniono", gdy skrobanie ekranu za pomocą HttpWebRequest.GetResponse()
To jest mój kod do sprawdzania, czy adres URL jest żywo
public static bool IsLiveUrl(string url)
{
HttpWebRequest webRequest = WebRequest.Create(url) as HttpWebRequest;
webRequest.UserAgent = "Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.0.6) Gecko/20060728 Firefox/1.5";
webRequest.CookieContainer = new CookieContainer();
WebResponse webResponse;
try
{
webResponse = webRequest.GetResponse();
}
catch (WebException e)
{
return false;
}
catch (Exception ex)
{
return false;
}
return true;
}
Ten kod działa perfekcyjnie, ale dla konkretnej witryny hostowane na apache otrzymuję wyjątek internetowej z następującym komunikatem. „Zdalny serwer zwrócił błąd: (403) Zakazane” W dalszej kontroli znalazłem następujące dane w obiekcie WebException
status = „ProtocolError” StatusDescription = „Bad Behavior”
To żądanie nagłówek "User-Agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv: 1.8.0.6) Gecko/20060728 Firefox/1.5 Host: scenicspares.co.uk Połączenie: Keep-Alive"
To jest nagłówek odpowiedzi "Keep-Alive: timeout = 4, max = 512 Połączenie: Keep-Alive Transfer-Encoding: pakietowego Content-Type: text/html Data: Wed, 13 Jan 2011 10:29:36 GMT Server: Apache”
Ja wybiłem te nagłówki za pomocą zegarka w VS2008. Ramka w użyciu to 3,5.
Witaj przy pomocy @syed, napotykam ten sam problem i już dodałem kod .Accept, ale nadal mam ten błąd. Jakieś pomysły? dzięki – swdev
Mam to, muszę dodać te trzy linie, 'webRequest.Method =" GET "; webRequest.UserAgent = "Foo"; webRequest.Accept = "text/html"; 'Inny serwer może wymagać innej konfiguracji – swdev
Dzięki swdev. Twoja wskazówka wydaje się rozwiązać problem z niektórymi stronami wikipedii. – newman