Вход на сайт программно с помощью C # и класса WebRequest - PullRequest
1 голос
/ 18 января 2011

Я пытаюсь войти на сайт, используя C # и класс WebRequest.Это код, который я написал вчера вечером для отправки POST-данных на веб-страницу:

public string login(string URL, string postData)
{
    Stream webpageStream;
    WebResponse webpageResponse;
    StreamReader webpageReader;
    byte[] byteArray = Encoding.UTF8.GetBytes(postData);

    _webRequest = WebRequest.Create(URL);
    _webRequest.Method = "POST";
    _webRequest.ContentType = "application/x-www-form-urlencoded";
    _webRequest.ContentLength = byteArray.Length;

    webpageStream = _webRequest.GetRequestStream();
    webpageStream.Write(byteArray, 0, byteArray.Length);

    webpageResponse = _webRequest.GetResponse();

    webpageStream = webpageResponse.GetResponseStream();

    webpageReader = new StreamReader(webpageStream);

    string responseFromServer = webpageReader.ReadToEnd();

    webpageReader.Close();
    webpageStream.Close();
    webpageResponse.Close();

    return responseFromServer;
}

, и он отлично работает, но я понятия не имею, как я могу изменить его для отправки POST-данных в сценарий входа в систему.а затем сохраните файл cookie (?) и войдите в систему.

Я просмотрел свои сетевые переводы с помощью Firebug на странице входа в веб-сайты, и он отправляет данные POST на URL-адрес, который выглядит следующим образом:

accountName=myemail%40gmail.com&password=mypassword&persistLogin=on&app=com-sc2

Насколько я знаю, чтобы иметь возможность использовать мою учетную запись на этом веб-сайте в моем приложении C #, мне нужно сохранить cookie-файл, отправляемый веб-сервером, и затем использовать его при каждом запросе?Это правильно?Или я могу вообще без куки?

Любая помощь очень ценится, спасибо!:)

Ответы [ 2 ]

1 голос
/ 18 января 2011

Процесс входа в систему зависит от конкретного веб-сайта.Если он использует куки, вы должны их использовать.Я рекомендую использовать Firefox с некоторыми плагинами для просмотра http-заголовков, чтобы посмотреть внутри заголовков, как они отправляются на ваш конкретный веб-сайт, а затем реализовать его таким же образом в C #.Я ответил на очень похожий вопрос позавчера, включая пример с файлами cookie. Смотри здесь.

0 голосов
/ 14 февраля 2014

Мне больше повезло с использованием класса HtmlElement для работы с веб-сайтами.

Здесь представляет собой перекрестную публикацию с примером того, как будет работать вход через код (при условии, что выиспользуя элемент управления WebBrowser)

...