2013-02-25 2 views
0

Прежде чем все расстраиваются, что на это был дан ответ. Я просмотрел веб-страницы, чтобы узнать, как это сделать, и попробовал ряд методов. Login to website, via C# и How to programmatically log in to a website to screenscape? Оба эти были полезны, но я не могу понять, почему я не могу пройти страницу входа. Вот мой код:Войдите на сайт, используя C#

string url = "https://www.advocare.com/login.aspx"; 
string url2 = "https://url.after.login"; 
HttpWebRequest wReq = WebRequest.Create(url) as HttpWebRequest; 
wReq.KeepAlive = true; 
wReq.Method = "POST"; 
wReq.AllowAutoRedirect = false; 
wReq.ContentType = "application/x-www-form-urlencoded"; 
string postData = "ctl00$cphContent$txtUserName=Username&ctl00$cphContent$txtPassword=Password"; 
byte[] dataBytes = UTF8Encoding.UTF8.GetBytes(postData); 
wReq.ContentLength = dataBytes.Length; 
using (Stream postStream = wReq.GetRequestStream()) 
{ 
    postStream.Write(dataBytes, 0, dataBytes.Length); 
} 
HttpWebResponse wResp = wReq.GetResponse() as HttpWebResponse; 
string pageSource; 
wReq = WebRequest.Create(url2) as HttpWebRequest; 
wReq.CookieContainer = new CookieContainer(); 
wReq.CookieContainer.Add(wResp.Cookies); 
HttpWebResponse wResp2 = wReq.GetResponse() as HttpWebResponse; 
using (StreamReader sr = new StreamReader(wResp2.GetResponseStream())) 
{ 
    pageSource = sr.ReadToEnd(); 
} 

Everytime я смотрю на исходный текст это HTML для страницы login.aspx. Я должен что-то упустить. Может быть, это не прием печенья, я не знаю. Один вопрос, который я имею в стороне, почему эта работа не работает, находится в строке postData = "". Предполагают ли они, что это имя или идентификационная часть тега html? Любая помощь по этому поводу очень ценится, поскольку я в тупике и мне придется искать по-другому. Я хотел бы продолжить с WebRequest и WebResponse вместо WebBrowser. Если я не могу, ну ладно. Еще раз спасибо за любую помощь!

+0

@Fastlink - ну, прежде чем отправлять данные для записи, вам нужно сделать запрос на получение bcoz «VIEWSTATE» отправляется в почтовых данных –

ответ

0

Что вы пытаетесь сделать помимо входа? Если это будет похоже на QAing на сайте, я бы предложил использовать селен и создать приложение C#, основанное на этом. Если я хочу, я могу опубликовать ссылку на базовый проект для проекта на основе селена.

+0

Просто мне нужно зайти на несколько страниц за регистрацией, очистить страницы, загрузить очищенные данные в базу данных, чтобы пользователь мог искать базу данных – Fatstink

0

Не обязательно просматривать источник страницы, но посмотрите фактическую HTTP-почту. Установите прокси-сервер HTTP, например Fiddler, а затем повторно зайдите на страницу, которую вы пытаетесь подражать. Заполните запрос HTTP POST и проверьте результаты, полученные в прокси. Оттуда вы сможете увидеть фактические параметры, куки, заголовки и т. Д., Которые передаются, и затем вы можете попытаться воспроизвести это в своем коде. Часто бывает легко пропустить что-то, просто просматривая источник HTML, но мониторинг сетевого трафика довольно прост.

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