poniedziałek, 17 lutego 2014
Stosowanie usług sieciowych (Web Services) z poziomu Androida
Kod źródłowy do tej lekcji znajduje się tutaj. Rozpakuj go i zaimportuj. W katalogu z kodem źródłowym znajdą się podkatalogi oznaczone numerami. Są to po prostu kolejne wersje kodu, tworzonego w ramach przykładów. Możesz analizować kolejne kroki tworzenia aplikacji, lub od razu zabrać się za kod z katalogu o najwyższym numerku.
Web Services możemy stosować w Androidzie tak jak w każdym innym programie napisanym w Javie, z tą różnicą że tutaj musimy pamiętać o kilku dodatkowych wymogach. Ponieważ stosowanie z usług sieciowych wiąże się z korzystaniem z sieci (jak sama nazwa wskazuje :) ), musimy zadbać o odpowiednie uprawnienia aplikacji. Z tego tytułu dodajemy wpis :
<uses-permission android:name="android.permission.INTERNET" />
po tagu </application> a przed </manifest>. Jest jeszcze jedna bardzo ważna sprawa – jeśli chcemy korzystać w aplikacji z usług sieciowych, musimy to robić w osobnym wątku. Jeśli o tym zapomnimy, Android i tak nam o tym przypomni rzucając na konsolę komunikat :
StrictMode$AndroidBlockGuardPolicy
Ja zrobiłem to przy użyciu osobnej klasy dziedziczącej po AsyncTask, choć jeśli chcesz możesz zastosować zwyczajny obiekt klasy Thread. Na poniższej ilustracji zczytałem zawartość naszej strony internetowej i wyświetiłem ją na konsoli.
Wynik wyświetlony na konsoli:
To jest po prostu kod źródłowy strony internetowej, choć równie dobrze mógłby to być jakiś plik z danymi w XML.
Alternatywnie możemy wykorzystać gotową bibliotekę HttpClient od Apache, dzięki której nie musimy skupiać się tak bardzo na szczegółach implementacji czytania strumienia. Efekt jest zasadniczo taki sam, forma inna. Tutaj również musimy pamiętać o wydzieleniu osobnego wątku.
Zajmiemy się teraz odbieraniem obiektów XML przy użyciu usług sieciowych. Wrzuciłem na serwer przykładowy zasób XML, by mieć co przetwarzać. Ten plik tam pozostanie, więc możesz z niego skorzystać. Adres pliku: http://jsystems.pl/storage/dane.xml
Bazując na poprzednim rozwiązaniu przerobiłem klasę Watek. Kod odpowiedzialny za pobieranie danych przeniosłem do osobnej metody dawajDane. Przy okazji przerobiłem to tak, by adres serwera, port i zasób przekazywać przez parametry metody a nie robić tego „na sztywno”. Dorzuciłem też metodę dawajXml która korzystając z metody dawajDane odbierze dane w postaci String i odda jako obiekt DOM:
Metoda doInBackground korzysta z przed momentem opisanych metod i odbiera obiekt DOM. Metoda onCreate aktywności pozostaje bez zmian:
Subskrybuj:
Komentarze do posta (Atom)
Znalazłem błąd w tekście "Ponieważ stosowanie z usług sieciowych", pierwszy akapit ;)
OdpowiedzUsuńW jaki sposób wyświetlić to co zostało pobrane ?
OdpowiedzUsuńwyświetlasz zmienną (w tym przypadku "d" np. poprzez TextView
UsuńW jaki sposób zrobić progressBar, który będzie się zwiększał (w metodzie onProgressUpdate) podczas przesyłu danych? (chodzi mi o progressBar poziomy)
OdpowiedzUsuńNie wiem jak dostać wielkość danych co mają być przesłane i jak tą informację wykorzystać przy zwiększaniu progressBara.
W jaki sposób wysyłać dane z telefonu na serwer? Chodzi mi o coś takiego, jak w przypadku formularzy na stronach internetowych: użytkownik np. wpisuje jakiś tekst, łączy się z odpowiednią stroną przesyłając te dane metodą Get lub Post, a potem działający na serwerze skrypt PHP coś z nimi dalej robi.
OdpowiedzUsuń44 year-old Staff Accountant III Harlie Laver, hailing from Rimouski enjoys watching movies like Not Another Happy Ending and Knife making. Took a trip to Coffee Cultural Landscape of Colombia and drives a Grand Prix. wejdz na strone
OdpowiedzUsuńCiekawy artykuł
OdpowiedzUsuńWartościowy blog
OdpowiedzUsuńWartościowy blog
OdpowiedzUsuńmmorpg oyunlar
OdpowiedzUsuńinstagram takipçi satın al
Tiktok Jeton Hilesi
Tiktok Jeton Hilesi
Antalya Sac Ekimi
instagram takipçi
İNSTAGRAM TAKİPÇİ SATIN AL
METİN2 PVP SERVERLER
instagram takipçi satın al
miło się czyta te wpisy!
OdpowiedzUsuńŚwietny post
OdpowiedzUsuńnft nasıl alınır
OdpowiedzUsuńen son çıkan perde modelleri
minecraft premium
en son çıkan perde modelleri
uc satın al
lisans satın al
yurtdışı kargo
özel ambulans
Wpis zawiera bardzo ciekawe informacje
OdpowiedzUsuńBardzo podoba mi się ten wpis. Zawiera mnóstwo ważnych informacji.
OdpowiedzUsuńPodoba mi się ten wpis
OdpowiedzUsuńGood content. You write beautiful things.
OdpowiedzUsuńhacklink
vbet
sportsbet
korsan taksi
mrbahis
mrbahis
taksi
hacklink
sportsbet
Success Write content success. Thanks.
OdpowiedzUsuńbetmatik
deneme bonusu
canlı poker siteleri
betpark
betturkey
kıbrıs bahis siteleri
kralbet
Bardzo podoba mi się sposób w jaki przedstawiasz informacje.
OdpowiedzUsuńSuper wpis
OdpowiedzUsuńCiekawe informacje
OdpowiedzUsuńmardin
OdpowiedzUsuńbalıkesir
bandırma
kağıthane
gölcük
İJR
artvin
OdpowiedzUsuńbitlis
niğde
hatay
tunceli
GC1QY
salt likit
OdpowiedzUsuńsalt likit
dr mood likit
big boss likit
dl likit
dark likit
PVCZU4
salt likit
OdpowiedzUsuńsalt likit
YQFA
Niezwykle cenne wskazówki. Rewelacyjny jest ten wpis
OdpowiedzUsuńTen wpis jest bardzo interesujący
OdpowiedzUsuńChętnie wykorzystam zdobyte tu informacje w praktyce.
OdpowiedzUsuńشركة كشف تسربات المياه بالجبيل BpNaHtrHkA
OdpowiedzUsuńشركة تنظيف مساجد بجازان MPfe4LSnxQ
OdpowiedzUsuńشركة مكافحة بق الفراش بالاحساء MLm6JKHMF5
OdpowiedzUsuńW tym wpisie znajduje się wiele ważnych i ciekawych informacji.
OdpowiedzUsuń