Прежде чем все расстраиваются, что на это был дан ответ. Я просмотрел веб-страницы, чтобы узнать, как это сделать, и попробовал ряд методов. 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
. Если я не могу, ну ладно. Еще раз спасибо за любую помощь!
@Fastlink - ну, прежде чем отправлять данные для записи, вам нужно сделать запрос на получение bcoz «VIEWSTATE» отправляется в почтовых данных –