2015-10-11 4 views
0

Я работаю над школьным проектом, который я хочу посмотреть на нашем расписании с наших устройств 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&amp;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 типа решений.

  1. 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 ». но на сайте моей школы Я не не получаю, даже «Неверный пароль». (Если я нахожу неправильный пароль в браузере, я получаю неправильную ошибку пароля.)

  1. Дублирование формы в файл .HTML и использование WebView для входа в систему с помощью JavaScript. Если я попробую это, я перенаправляюсь на другую страницу и получаю очень странную ошибку, например: «Пользовательский null не может быть распознан». Таким образом, эти 2 типа решений не сработали для меня.

Итак, вопрос в том, как я могу войти в систему website с C#?

+1

Используйте элемент управления WebBrowser. – C1sc0

+0

Я использовал элемент управления WebBrowser в своих предыдущих проектах - вы можете получить текстовые поля и выполнить кнопку, чтобы войти в нее. – EyeSeeSharp

+0

К сожалению, приложение Windows 8.1 не поддерживает WebBrowser. Существует только WebView, и WebView не имеет таких методов, как GetElementByID(). Я думаю, что единственный способ сделать это - использовать WebRequest, но я не мог заставить его работать для этого. Я думаю, что проблема с печеньем. –

ответ

1

Пример кода в документе WebBrowser завершенного события:

HtmlElement element; 
// Filling the username 
element = webBrowser.Document.GetElementById("ContentPlaceHolder1_UsernameTextBox"); 
if (element != null) 
{ 
    element.InnerText = "username"; 
} 


// In case if there is no id of the input field you can get it by name 
HtmlElementCollection elements = null; 
elements = webBrowser.Document.All.GetElementsByName("pass"); 
element = elements[0]; 
element.InnerText = "password"; 

//login (click) 
elements = webBrowser.Document.All.GetElementsByName("submit"); 
element = elements[0]; 
element.InvokeMember("CLICK"); 
+0

Спасибо за ваш ответ, но мне нужно сделать это в приложении Windows 8.1. К сожалению, WebBrowser не существует в универсальном приложении Windows 8.1. Я сделал тот же процесс, используя WebBrowser с Forms, но приложения W8.1 выглядят иначе. –

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