Как войти на веб-страницу и получить ее содержимое в C #? - PullRequest
3 голосов
/ 04 марта 2009

Как войти на веб-страницу и получить ее содержимое в C #?

Ответы [ 7 ]

5 голосов
/ 04 марта 2009

Это зависит от того, что требуется для входа в систему. Вы можете использовать веб-клиент для отправки учетных данных для входа на страницу входа на сервер (с помощью любого метода, GET или POST), но это не сохранит cookie. Существует способ , чтобы получить веб-клиент для обработки файлов cookie, поэтому вы можете просто ПОСТАВИТЬ информацию для входа на сервер, затем запросить нужную страницу с тем же веб-клиентом, а затем делать все, что вы хотите со страницей.

3 голосов
/ 04 марта 2009

Посмотрите на System.Net.WebClient, или для более сложных требований System.Net.HttpWebRequest/System.Net.HttpWebResponse.

Что касается фактического применения: вам нужно изучить источник html каждой страницы, которую вы хотите очистить, чтобы точно узнать, что Http-запрос ожидает.

2 голосов
/ 06 марта 2009
string postData = "userid=ducon";
            postData += "&username=camarche" ;
            byte[] data = Encoding.ASCII.GetBytes(postData);
            WebRequest req = WebRequest.Create(
                URL);
            req.Method = "POST";
            req.ContentType = "application/x-www-form-urlencoded";
            req.ContentLength = data.Length;
            Stream newStream = req.GetRequestStream();
            newStream.Write(data, 0, data.Length);
            newStream.Close();
            StreamReader reader = new StreamReader(req.GetResponse().GetResponseStream(), System.Text.Encoding.GetEncoding("iso-8859-1"));
            string coco = reader.ReadToEnd();
2 голосов
/ 04 марта 2009

Как вы понимаете "логин"?

Если подпапка защищена на уровне операционной системы, и браузер всплывает в диалоговом окне входа в систему, когда вы туда заходите, вам нужно установить свойство Credentials в HttpWebRequest.

Если на сайте имеется собственная система регистрации и членства на основе файлов cookie, вам необходимо использовать HttpWebRequest для первого ответа на форму входа.

1 голос
/ 06 марта 2009

Вы можете использовать сборку в объекте WebClient вместо того, чтобы самостоятельно создавать запрос.

WebClient wc = new WebClient();
wc.Credentials = new NetworkCredential("username", "password");
string url = "http://foo.com";          
try
{
    using (Stream stream = wc.OpenRead(new Uri(url)))
    {
        using (StreamReader reader = new StreamReader(stream))
        {
            return reader.ReadToEnd();
             }
    }
}
catch (WebException e)
{
    //Error handeling
}
1 голос
/ 04 марта 2009

Используйте класс WebClient .

Dim Html As String

Using Client As New System.Net.WebClient()
    Html = Client.DownloadString("http://www.google.com")
End Using
0 голосов
/ 04 марта 2009

Попробуйте это:

public string GetContent(string url)  
{ 
  using (System.Net.WebClient client =new System.Net.WebClient()) 
  { 
  return client.DownloadString(url); 
  } 
} 
...