Я хочу войти на сайт моей школы, используя C #, чтобы очистить некоторые данные, но я не уверен, как это сделать. URL: https://www.lectio.dk/lectio/31/default.aspx ("log ind" приведет вас к экрану входа).
Итак, я перепробовал довольно много вещей, но, насколько я понимаю, я должен сначала сделать GET, чтобы сохранить некоторые куки для возможного POST, содержащего информацию для входа. После завершения процедуры POST мой HTTPClient сможет отправлять запросы http для получения информации. Я не уверен, что понял / выполнил это правильно все же. Вот мой код.
var baseAdress = new Uri("https://www.lectio.dk/lectio/31/");
var cookieContainer = new CookieContainer();
using (var handler = new HttpClientHandler() { CookieContainer = cookieContainer, UseCookies = true})
using (var client = new HttpClient(handler) { BaseAddress = baseAdress })
{
var homePageResult = client.GetAsync("login.aspx");
homePageResult.Result.EnsureSuccessStatusCode();
var content = new FormUrlEncodedContent(new[]
{
//information hidden for privacy reasons
new KeyValuePair<string, string>("m%24Content%24username2","username"),
new KeyValuePair<string,string>("m%24Content%24passwordHidden", "password"),
});
var loginResult = client.PostAsync("login.aspx", content).Result;
loginResult.EnsureSuccessStatusCode();
//'forside' means frontpage in danish
Stream responseStream = client.GetStreamAsync("forside.aspx").Result;
using(StreamReader reader = new StreamReader(responseStream))
{
Console.WriteLine(reader.ReadToEnd());
}
}
Я ожидаю увидеть ответ от фактического https://www.lectio.dk/lectio/31/forside.aspx,, который доступен только при входе в систему, но кажется, что POST не удается войти, так что я получаю ответ только от / login.aspx.