Mam już działający serwer, który potrafi wysłać jsona w świat. Trzeba mi teraz czegoś co odbierze tego jsona i wyświetli użytkownikowi. Czas na prowizorycznego klienta. Choć to prowizorka, to powinien naprawdę komunikować się z serwerem, a nie tylko to udawać.
Żeby aplikacja mogła się połączyć z internetem trzeba jej przyznać w manifeście odpowiednie uprawnienia:
Dodanie odpowiedniego uprawnienia to nie jedyne o czym trzeba pamiętać przy tworzeniu aplikacji, która łączy się z internetem. Druga rzecz to fakt, że zapytanie nie może się wywoływać w głównym wątku. Żeby zaspokoić tą potrzebę trzeba stworzyć asynchroniczny task, który odpyta serwer poza głównym wątkiem:
Tworzę klasę OdjazdQueryTask (wplatam nazwę aplikacji, bo mogę 😉 ), która rozszerza AsyncTask, z paramterem typu URL na wejściu i Stringiem na wyjściu. Środkowy parameter jest typem Void, bo nie wykorzystuję metody onProgressUpdate. Metoda onPostExecute wykonuje się w momencie zakończenia taska i wstawia mi wynik zapytania do textView. Druga metoda doInBackground wykonuje zapytanie do serwera dla podanego Url-a:
Layout mojej aplikacji, to dwa przyciski i textview. Na ten moment to mi wystarczy. Trzeba podpiąć pod przycisk odpowiednią akcję, która wyzwoli zapytanie do serwera:
Tworzę nową instancję klasy OdjazdQueryTask i wywołuję ją z paramentrem URL stworzonym dla początku startowego ‘praca’.
I teraz krótka demonstracja jak zachowuje się aplikacja po wciśnięciu każdego z przycisków:
Jak na razie wszystko w najlepszym porządku 🙂
Kod dostępny tu: https://github.com/jezinka/Odjazd-client