Я работаю над школьным проектом, который я хочу посмотреть на нашем расписании с наших устройств Windows8.1 с универсальным приложением. Так что мне не нужно входить в систему каждый раз, когда я хочу его проверить. Мне нужен метод, который регистрирует меня на веб-сайте нашей школы и позволяет мне видеть исходный код, чтобы я мог видеть уроки.Отправьте HTML-форму с помощью C#
Веб-сайт Мне нужно войти в систему с кодом C# here.
Исходный код походит:
<form method="post" action="/adfs/ls/?SAMLRequest=nZJPb9swDMW/iqF7bMmt11SIU2QZihZosSBxd9hloG1m1WZJriglwT79lD9uM2DrYUeBj3yPP2py%0As9NdskFHypqSiZSzBE1jW2W%2Bl%2Bypuh2N2c10QqC7vJez4J/NEl8Ckk9ioyF5rJQsOCMtkCJpQCNJ%0A38jV7PFB5imXvbPeNrZjyYwInY9Wc2soaHQrdBvV4NPyoWTP3vcks0yrH4Z8aBWmv6D9qQympsug%0A77Mt1kSWJbfWNXgIU7I1dIQsuf9Usm8C4epacH6Zg/iQQ12PEQpx2dQXdcFbhCijBRCpDb41EgW8%0Aj4ZgfMlyLoqR4CN%2BUYmxFFzmeVoU119Zsjgt8VGZI5z3Nq6PIpJ3VbUYLT6vKpZ8GSBHATshlQd3%0Ad87y/cEwAGTTAdfACNvQBPoT1SQ7t3m94%2BmE2B4Yxlt43PlkbnUPTtE%2Bo4ad0kG/5jwXzruYYonr%0A/0q9l62xRQf7t4Q4F41XzfG5jdzslobYf3Odnor/2OKtfP5Zp78B&RelayState=Zadkine" id="MainForm">
<input name="ctl00$ContentPlaceHolder1$UsernameTextBox" type="text" id="ContentPlaceHolder1_UsernameTextBox" />
<input name="ctl00$ContentPlaceHolder1$PasswordTextBox" type="password" id="ContentPlaceHolder1_PasswordTextBox" />
<input type="submit" name="ctl00$ContentPlaceHolder1$SubmitButton" value="Aanmelden" id="ContentPlaceHolder1_SubmitButton" class="Resizable" />
</form>
Это он, в основном. Есть некоторые __VIEWSTATE's, но я не знаю, имеют ли они значение.
Я нашел 2 типа решений.
WebRequest примеры здесь на переполнение стека, которые не работают:/
HttpWebRequest request = (HttpWebRequest)WebRequest.Create("https://sts.zadkine.nl/adfs/ls/?SAMLRequest=nZJPb9swDMW/iqF7bMmt11SIU2QZihZosSBxd9hloG1m1WZJriglwT79lD9uM2DrYUeBj3yPP2py%0As9NdskFHypqSiZSzBE1jW2W%2Bl%2Bypuh2N2c10QqC7vJez4J/NEl8Ckk9ioyF5rJQsOCMtkCJpQCNJ%0A38jV7PFB5imXvbPeNrZjyYwInY9Wc2soaHQrdBvV4NPyoWTP3vcks0yrH4Z8aBWmv6D9qQympsug%0A77Mt1kSWJbfWNXgIU7I1dIQsuf9Usm8C4epacH6Zg/iQQ12PEQpx2dQXdcFbhCijBRCpDb41EgW8%0Aj4ZgfMlyLoqR4CN%2BUYmxFFzmeVoU119Zsjgt8VGZI5z3Nq6PIpJ3VbUYLT6vKpZ8GSBHATshlQd3%0Ad87y/cEwAGTTAdfACNvQBPoT1SQ7t3m94%2BmE2B4Yxlt43PlkbnUPTtE%2Bo4ad0kG/5jwXzruYYonr%0A/0q9l62xRQf7t4Q4F41XzfG5jdzslobYf3Odnor/2OKtfP5Zp78B&RelayState=Zadkine"); request.Method = "POST"; request.ContentType = "application/x-www-form-urlencoded"; using (var requestStream = request.GetRequestStream()) using (var writer = new StreamWriter(requestStream)) { writer.Write("ctl00$ContentPlaceHolder1$UsernameTextBox=" + yourusername + "&ctl00$ContentPlaceHolder1$PasswordTextBox=" + yourpassword); } using (var responseStream = request.GetResponse().GetResponseStream()) using (var reader = new StreamReader(responseStream)) { var result = reader.ReadToEnd(); richTextBox1.Text = result; }
В других веб-сайтах, если я пытаюсь этот код, я получаю ошибку как «У вас есть чтобы разрешить использование файлов cookie ». но на сайте моей школы Я не не получаю, даже «Неверный пароль». (Если я нахожу неправильный пароль в браузере, я получаю неправильную ошибку пароля.)
- Дублирование формы в файл .HTML и использование WebView для входа в систему с помощью JavaScript. Если я попробую это, я перенаправляюсь на другую страницу и получаю очень странную ошибку, например: «Пользовательский null не может быть распознан». Таким образом, эти 2 типа решений не сработали для меня.
Итак, вопрос в том, как я могу войти в систему website с C#?
Используйте элемент управления WebBrowser. – C1sc0
Я использовал элемент управления WebBrowser в своих предыдущих проектах - вы можете получить текстовые поля и выполнить кнопку, чтобы войти в нее. – EyeSeeSharp
К сожалению, приложение Windows 8.1 не поддерживает WebBrowser. Существует только WebView, и WebView не имеет таких методов, как GetElementByID(). Я думаю, что единственный способ сделать это - использовать WebRequest, но я не мог заставить его работать для этого. Я думаю, что проблема с печеньем. –