Plan zajęć cz. 3 – Implementacja logiki aplikacji

Podczas tego tygodnia miałem zabrać się za tworzenie interfejsu graficznego aplikacji desktopowej i mobilnej. Niestety logika aplikacji nie dała mi spokoju i za bardzo mnie pochłonęła przez co skupiłem się głównie na niej.

Logowanie

Głównym problem do rozwiązania w aplikacji jest zalogowanie się do systemu oraz pobranie informacji o zajęciach. W pierwotnej wersji tej aplikacji wykorzystałem gotowy element z Windows Forms WebBrowser. Używałem go do nawigowania, logowania oraz pobierania informacji ze strony. Niestety nie posiadałem szczegółowych informacji na temat zawartości przeglądarki. Zadania wykonywały się asynchronicznie i nie miałem łatwego sposobu na sprawdzenie poprawności logowania i pobierania informacji.

Tym razem będę wysyłał wiadomości POST do strony wraz z informacjami o loginie i haśle. Dzięki temu otrzymana odpowiedź będzie miała informacje o aktualnym stanie strony — czy jestem zalogowany, czy wystąpił jakiś błąd… Pobieranie informacji w ten sposób jest bardzo łatwe i niezawodne, ponieważ istnieje możliwość reagowania na sygnały otrzymane po wysłaniu wiadomości do serwera.

Oczywiście nie odbyło się bez żadnych problemów. Przed wysłaniem POST request trzeba skonstruować jego zawartość tak, aby serwer myślał, że jest to zawartość wypełnionego formularza na stronie. System uczelni posiada bardzo dużo informacji akurat w tej wiadomości. Co nie pozwalało na łatwe wybranie informacji, które trzeba przesłać. Z pomocą przyszedł mój znajomy, który już jakiś czas temu zrobił podobną aplikację na telefon. Napisał ją za pomocą JavaScriptu, z którym nie byłem do tej pory zaprzyjaźniony na tyle, aby stwierdzić jak to zrobić prawidłowo w C#. Spędziłem parę dni na kombinowaniu i sprawdzaniu metod z jego kodu. Ostatecznie okazało się, że komenda z JQuery serialize(), której używał, generuje na podstawie formularza string przedstawiający zawartość wiadomości, która będzie przesłana za pomocą wiadomości POST. W związku z tym znalazłem na Internecie przykład jej wykorzystania i pobrałem przykładową stronę, skopiowałem cały formularz ze strony i wkleiłem do przykładu.

Po załadowaniu strony w przeglądarce na dole strony pojawia się ciąg zawierający informacje, które zostaną przesłane poprzez wysłanie tego formularza. Posiadając już informacje na temat treści wiadomości, przystąpiłem do tworzenia usługi która będzie logowała się do systemu, pobierała informacje na temat zajęć i zwracała listę dni z zajęciami.

Kończąc

W ciągu tego tygodnia skupiłem się głównie na logice aplikacji, co nie znaczy, że wcale nie pracowałem nad interfejsem graficznym. Zostało już dużo rzeczy zrobionych, pozostało dokończenie wyświetlania planu zajęć w trybie jedno, pięcio oraz siedmiodniowym. Jak i przechodzenie pomiędzy tygodniami.

Kolejnym dużym zadaniem będzie stworzenie karuzeli wyświetlającej aktualne informacje ze stron wydziału oraz uczelni. Nigdy jeszcze czegoś takiego nie zrobiłem, ale myślę, że nie będzie to jakoś bardzo trudne. W ciągu następnego tygodnia chciałbym już mieć aplikację w dużej części skończoną.

Cały kod aplikacji można zobaczyć na moim koncie github /kkolodziejczak/ZUTSchedule

Leave a Reply

Translate »