2017-02-08 2 views
0

Я пытаюсь принести HTML страницы с помощью кода:Получение 403 Exception выборка веб-страницы программно, даже если веб-страница доступна через браузер

 WebRequest r = WebRequest.Create(szPageURL); 
     WebClient client = new WebClient(); 
     try 
     { 
      WebResponse resp = r.GetResponse(); 
      StreamReader sr = new StreamReader(resp.GetResponseStream()); 
      szHTML = sr.ReadToEnd(); 
     } 

Этот код работает, когда я использую URL, как www.microsoft .com, www.google.com или www.nasa.gov. Однако, когда я добавляю в www.epa.gov (используя параметр http или https в параметре URL), я получаю исключение 403 при выполнении r.GetResponse(). Однако я могу легко получить страницу вручную в браузере. Исключением, которое я получаю, является 403 (Forbidden), и член статуса исключения говорит «ProtocolError». Что это значит? Почему я получаю это на странице, которая действительно доступна? У кого-нибудь есть идеи? Благодаря!

BTW - Я тоже попробовал этот путь:

 string downloadString = client.DownloadString(szPageURL); 

Got точно такое же исключение.

ответ

0

попробовать этот код, он работает:

string Url = "https://www.epa.gov/"; 
CookieContainer cookieJar = new CookieContainer(); 
HttpWebRequest request = (HttpWebRequest)WebRequest.Create(Url); 
request.CookieContainer = cookieJar; 
request.Accept = @"text/html, application/xhtml+xml, */*"; 
request.Referer = @"https://www.epa.gov/"; 
request.Headers.Add("Accept-Language", "en-GB"); 
request.UserAgent = @"Mozilla/5.0 (compatible; MSIE 10.0; Windows NT 6.2; Trident/6.0)"; 
request.Host = @"www.epa.gov"; 
HttpWebResponse response = (HttpWebResponse)request.GetResponse(); 
String htmlString; 
using (var reader = new StreamReader(response.GetResponseStream())) 
{ 
htmlString = reader.ReadToEnd(); 
} 
+0

Спасибо! Так что, по сути, мой код не работал, потому что это было эквивалентно тому, что браузер не принимал файлы cookie, а затем пытался получить доступ к этой странице? – lerxst3

Смежные вопросы