This shows you the differences between two versions of the page.
eim:colocvii:colocviu02 [2020/05/05 20:51] dragos.niculescu |
eim:colocvii:colocviu02 [2021/05/30 21:52] (current) dan_valentin.bina [Observații Generale] |
||
---|---|---|---|
Line 53: | Line 53: | ||
dependencies { | dependencies { | ||
... | ... | ||
- | compile group: 'cz.msebera.android', name: 'httpclient', version: '4.4.1.2' | + | implementation group: 'cz.msebera.android', name: 'httpclient', version: '4.4.1.2' |
} | } | ||
</file> | </file> | ||
Line 67: | Line 67: | ||
dependencies { | dependencies { | ||
... | ... | ||
- | useLibrary 'org.apache.http.legacy' | + | implementation 'org.apache.http.legacy' |
} | } | ||
</file> | </file> | ||
Line 79: | Line 79: | ||
dependencies { | dependencies { | ||
... | ... | ||
- | compile project (':jsoup-1.10.2') | + | implementation project (':jsoup-1.10.2') |
} | } | ||
</file> | </file> | ||
Line 424: | Line 424: | ||
* în situația în care informațiile meteorologice se găsesc în obiectul gestionat de server, sunt preluate local; | * în situația în care informațiile meteorologice se găsesc în obiectul gestionat de server, sunt preluate local; | ||
* în situația în care informațiile meteorologice nu se găsesc în obiectul gestionat de server, sunt preluate prin interogarea serviciului Internet, la distanță: | * în situația în care informațiile meteorologice nu se găsesc în obiectul gestionat de server, sunt preluate prin interogarea serviciului Internet, la distanță: | ||
- | * se realizează o cerere de tip ''POST'' la adresa Internet [[http://www.wunderground.com/cgi-bin/findweather/getForecast]]; parametrul care trebuie precizat este ''query'' și are valoarea orașului pentru care se dorește să se obțină informațiile; acesta se atașează cererii de tip ''POST'', folosind codificarea ''UTF-8''; | + | * o cerere de tip ''GET'' în care valoarea parametrului este inclusă în cadrul adresei Internet: [[http://api.openweathermap.org/data/2.5/weather?q=Bucharest&appid=...]]); |
- | * alternativ, se poate realiza o cerere de tip ''GET'' în care valoarea parametrului este inclusă în cadrul adresei Internet: [[https://www.wunderground.com/cgi-bin/findweather/getForecast?query=...]]); | + | |
* se obține răspunsul sub forma unui șir de caractere, reprezentând codul sursă al paginii Internet; | * se obține răspunsul sub forma unui șir de caractere, reprezentând codul sursă al paginii Internet; | ||
* folosind biblioteca Jsoup, se inspectează documentul în format HTML furnizat pentru a determina locația la care sunt disponibile informațiile necesare <code html> | * folosind biblioteca Jsoup, se inspectează documentul în format HTML furnizat pentru a determina locația la care sunt disponibile informațiile necesare <code html> | ||
- | <script> | + | { |
- | wui.asyncCityPage = true; | + | "coord": { |
- | wui.bootstrapped.API = ""; | + | "lon": 26.11, |
- | wui.api_data = | + | "lat": 44.43 |
- | { | + | }, |
- | "response": { | + | "weather": [ |
- | "version": "2.0", | + | { |
- | "units": "metric", | + | "id": 804, |
- | "location": { | + | "main": "Clouds", |
- | "name": "Bucuresti", | + | "description": "overcast clouds", |
- | "neighborhood":null, | + | "icon": "04n" |
- | "city": "Bucuresti", | + | |
- | "state": null, | + | |
- | "state_name":"Romania", | + | |
- | "country": "RO", | + | |
- | "country_iso3166":null, | + | |
- | "country_name":"Romania", | + | |
- | "zip":"00000", | + | |
- | "magic":"11", | + | |
- | "wmo":"15420", | + | |
- | "latitude":44.50000000, | + | |
- | "longitude":26.12999916, | + | |
- | "elevation":91.00000000, | + | |
- | "l": "/q/zmw:00000.11.15420" | + | |
- | }, | + | |
- | "date": { | + | |
- | ... | + | |
- | }, | + | |
- | "current_observation": { | + | |
- | "source": "PWS", | + | |
- | "station": { | + | |
- | ... | + | |
- | }, | + | |
- | "estimated": null, | + | |
- | "date": { | + | |
- | ... | + | |
- | }, | + | |
- | "metar": "AAXX 16161 15420 22997 80502 10201 20109 30072 40180 55008 8807/ 333 55300 0//// 20454", | + | |
- | "condition":"Overcast", | + | |
- | "temperature": 21.5, | + | |
- | "humidity":48, | + | |
- | "wind_speed":6.9, | + | |
- | ..., | + | |
- | "pressure": 1018, | + | |
- | ..., | + | |
- | } | + | |
} | } | ||
- | }; | + | ], |
- | </script> | + | "base": "stations", |
- | </code> Se observă faptul că informațiile necesare se regăsesc în cadrul unei etichete de tip ''<script> ... </script>'' care conține un obiect denumit ''wui.api_dat'' exprimat în format JSON. În acest sens, se obține lista tuturor etichetelor de tip ''script'' (se folosește metoda ''getElementsByTag()''), se preia conținutul acestora (prin intermediul metodei ''data()'' din cadrul clasei ''Element'') și se verifică dacă se regăsește șirul de caractere ''wui.api_dat''; | + | "main": { |
+ | "temp": 284.65, | ||
+ | "feels_like": 283.92, | ||
+ | "temp_min": 283.15, | ||
+ | "temp_max": 285.93, | ||
+ | "pressure": 1016, | ||
+ | "humidity": 81 | ||
+ | }, | ||
+ | "visibility": 10000, | ||
+ | "wind": { | ||
+ | "speed": 0.5, | ||
+ | "deg": 310 | ||
+ | }, | ||
+ | "clouds": { | ||
+ | "all": 88 | ||
+ | }, | ||
+ | "dt": 1588887122, | ||
+ | "sys": { | ||
+ | "type": 1, | ||
+ | "id": 6911, | ||
+ | "country": "RO", | ||
+ | "sunrise": 1588906577, | ||
+ | "sunset": 1588958868 | ||
+ | }, | ||
+ | "timezone": 10800, | ||
+ | "id": 683506, | ||
+ | "name": "Bucharest", | ||
+ | "cod": 200 | ||
+ | } | ||
+ | </code> | ||
* se inspectează documentul în format JSON pentru a obține informațiile necesare: se obțin, succesiv, obiectele atașate ca valori pentru cheile ''response'' → ''current_observation'' și ulterior datele meteorologice, regăsite ca valori sub cheile ''temperature'', ''wind_speed'', ''condition'', ''pressure'', ''humidity''; | * se inspectează documentul în format JSON pentru a obține informațiile necesare: se obțin, succesiv, obiectele atașate ca valori pentru cheile ''response'' → ''current_observation'' și ulterior datele meteorologice, regăsite ca valori sub cheile ''temperature'', ''wind_speed'', ''condition'', ''pressure'', ''humidity''; | ||
* se construiește un obiect de tipul ''WeatherForecastInformation'' folosind informațiile furnizate și se transmite către server pentru ca acesta să fie utilizat ulterior pentru cereri provenite de la alți clienți, vizând același oraș. | * se construiește un obiect de tipul ''WeatherForecastInformation'' folosind informațiile furnizate și se transmite către server pentru ca acesta să fie utilizat ulterior pentru cereri provenite de la alți clienți, vizând același oraș. |