' In questo esempio viene effettuata la chiamata ad un servizio WebApi REST messo a disposizione dal servizio "Allerta Meteo" della regione Emilia-Romagna che restituisce i livelli idrometrici del fiume Reno in 3 località diverse.
' Il codice può essere inserito in un task per la lettura periodica.
Dim Q as new QWTable
Q.Database=DB
Q.sql="select * from IOTLOG"
Q.allowallrecords=false
Q.active=true
' Stazioni di lettura
dim sensors= new dbarray("BONCONVENTO","CHIUSA CASALECCHIO","SASSO MARCONI")
' Url web service corrispondente
Dim urls As new Dbarray
urls(1)= "https://allertameteo.regione.emilia-romagna.it/api/jsonws/datiTempoReale-prevPiog-portlet.img/get-time-series/?stazione=-/1131382,4460927/simnbo&variabile=254,0,0/1,-,-,-/B13215"
urls(2)= "https://allertameteo.regione.emilia-romagna.it/api/jsonws/datiTempoReale-prevPiog-portlet.img/get-time-series/?stazione=-/1128243,4447318/simnbo&variabile=254,0,0/1,-,-,-/B13215"
urls(3)= "https://allertameteo.regione.emilia-romagna.it/api/jsonws/datiTempoReale-prevPiog-portlet.img/get-time-series/?stazione=-/1124785,4438151/simnbo&variabile=254,0,0/1,-,-,-/B13215"
dim f as integer
for f=1 to urls.size
Dim webClient As New System.Net.WebClient
Dim json As String = webClient.DownloadString(Urls(f))
' Recupero della risposta
Dim obj As Newtonsoft.Json.Linq.JArray = Newtonsoft.Json.Linq.JArray.Parse(json)
Dim i as integer
Dim Data As DateTime
Dim Valore as Double
for i=0 to obj.count-1
' Il quarto nodo è quello dei Values
Data=DateAdd(Dateinterval.Second,ctype(obj(i)("t"),Newtonsoft.Json.Linq.JValue).value/1000,New Date(1970,1,1,0,0,0)).toLocalTime
Valore=ctype(obj(i)("v"),Newtonsoft.Json.Linq.JValue).value
if not empty(Data) and not empty(Valore)
if not q.rowset.findkey(data,"RENO",sensors(f))
q.beginappend()
q.replace("DATA",data)
q.replace("DEVICENAME","RENO")
q.replace("SENSORNAME",sensors(f))
End If
q.replace("VALUE",Valore)
q.saverecord()
End If
next
Next
Q.active=false