Activitate de Laborator
Un lucru din ce în ce mai întâlnit este procesarea datelor pe un server în cloud, în timp ce pe dispozitivul de la edge (în cazul nostru, dispozitivul Android) se realizează doar apelarea unui serviciu. Astăzi vom implementa această arhitectură. Scheletul laboratorului.
1a. Din browser, vom verifica în browser funcționarea serverului serverului pentru GET și POST
1b. Să se verifice la linia de comandă functionarea severului
curl -X POST --data 'operation=times&t1=9&t2=2' http://jepi.cs.pub.ro/expr/expr_post.php
curl "http://jepi.cs.pub.ro/expr/expr_get.php?operation=times&t1=9&t2=2"
echo -e 'GET /expr/expr_get.php?operation=plus&t1=9&t2=2 HTTP/1.1\r\nHost:jepi.cs.pub.ro\r\n\r\n' | nc jepi.cs.pub.ro 80
1c. Studiați implementarea serverului în php sau python http://jepi.cs.pub.ro/expr/. Puteți rula un server local cu GET în python expr_get.py pe portul 8080 pentru a experimenta.
2. Pe baza functionalitatii serverului, se cere să se implementeze in Android un calculator, care suportă
operațiile de adunare/scădere/înmulțire/împărțire a două numere reale, pe baza
rezultatului furnizat de un serviciu web, accesibil prin HTTP, la adresele
Internet specificate în interfața Constants
, pentru fiecare dintre metodele
suportate pentru transmiterea informațiilor:
GET
:Constants.GET_WEB_SERVICE_ADDDRESS
POST
:Constants.POST_WEB_SERVICE_ADDRESS
Cele două numere reale sunt specificate în cadrul unor câmpuri text. În situația în care unul dintre acestea nu este precizat, se va afișa un mesaj de eroare corespunzător.
Operația care se dorește a fi efectuată precum și metoda prin care vor fi transmise informațiile către serviciul web vor putea fi selectate prin intermediul unor liste.
Parametrii ce trebuie incluși în cadrul cererii HTTP sunt:
operation = plus|minus|divide|times
t1 = număr real
t2 = număr real
De exemplu, http://jepi.cs.pub.ro/expr/expr_get.php?operation=times&t1=9&t2=2
pentru a inmulti 9 cu 8.
În cadrul unui câmp text va putea fi vizualizat răspunsul HTTP furnizat de serviciul web.
3. Vom extinde aplicatia cu un textview care afiseaza un citat
motivational. Vom adauga un buton care face un request la adresa
https://dummyjson.com/quotes
, si afiseaza intr-un textview primul citat din
JSON-ul returnat.
4. Să se salveze într-o bază de date SQLite toate operațiile executate de utilizator. Se va adăuga un nou buton în aplicație și la apăsarea acestuia, istoricul va fi afișat în Logcat.