2013-06-04 3 views
0

Когда я пытаюсь получить HTML-страницу я получаю эту ошибку:«Базовое соединение закрыто: соединение было закрыто неожиданно»

The underlying connection was closed: The connection was closed unexpectedly 

Я думаю, что сайт я получаю, использует некоторую защиту, основанную на ф.

WebClient single_page_client = new WebClient(); 
single_page_client.Headers.Add("user-agent", "Mozilla/4.0 (compatible; MSIE 6.0; Windows NT 5.1; .NET CLR 1.0.3705;)"); 
string cat_page_single = single_page_client.DownloadString(the_url); 

Как я могу это сделать? Как использовать прокси с Webclient?

EDIT

Если я использую этот код, он работает. Зачем?

HttpWebRequest webrequest = (HttpWebRequest)WebRequest.Create(current_url); 
webrequest.KeepAlive = true; 
webrequest.Method = "GET"; 
webrequest.ContentType = "text/html"; 
webrequest.Accept = "text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8"; 
//webrequest.Connection = "keep-alive"; 
webrequest.Host = "cat.sabresonicweb.com"; 
webrequest.Headers.Add("Accept-Language", "en-US,en;q=0.5"); 
webrequest.UserAgent = "Mozilla/5.0 (Windows NT 6.1; rv:18.0) Gecko/20100101 Firefox/18.0"; 

HttpWebResponse webresponse = (HttpWebResponse)webrequest.GetResponse(); 

Console.Write(webresponse.StatusCode); 
Stream receiveStream = webresponse.GetResponseStream(); 


Encoding enc = System.Text.Encoding.GetEncoding(1252);//1252 
StreamReader loResponseStream = new StreamReader(receiveStream, enc); 

string current_page = loResponseStream.ReadToEnd(); 

loResponseStream.Close(); 
webresponse.Close(); 

ответ

0

Первый запрос не использует заголовок, который указывает длину результата. Он закрывает соединение, когда он заканчивается.

Второй запрос использует заголовок длины, считывает указанное количество байтов, а затем изящно закрывает соединение. (Под контролем со стороны клиента, а не сервера ведомого отключения)

-или-

URL, вы послали вызвал ошибку на сервере. Есть ли ошибка в журнале сервера или в средстве просмотра событий?

+0

Нет, я не вижу ошибок в регистрации сервера или просмотре событий. И, как я написал, он работает с HttpWebRequest. Я думаю, это должно быть первым. благодаря – aquanat

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