HttpClient Declaratie

Met HttpClient kunnen een of meerdere variabelen worden gedeclareerd die een omgeving creren waarbinnen berichten kunnen worden samengesteld waarmee de HTTP services met standaard methoden zoals GET en POST kunnen worden aangeroepen.

HttpClient
HttpClientVar1, HttpClientVar2,....

HttpClientVar1, HttpClientVar2,....(VariableName)
Er kunnen 1 of meerdere HttpClient-variabelen worden gedeclareerd. Deze standaard HTTP methoden worden o.a. toegepast om functies van REST (
Representational State Transfer) webservices aan te roepen en uit te voeren. Met
HttpConnect kan een verbinding gemaakt worden met een webservice door de URL van de webservice (endpoint) op te geven zoals in: HttpConnect(HttpWeer,http://api.apixu.com). Met HttpSetHeaderField en HttpAddHeaderField kunnen additionele HTTP header velden worden opgegeven en met HttpSetParameter en HttpAddParameter de gewenste HTTP parameters. Vervolgens kan met HttpSetContent een body van het HTTP bericht worden opgegeven. Met HttpMethod tenslotte kan een van de standaard methoden HTTP_GET, HTTP_HEAD, HTTP_PUT, HTTP_POST, HTTP_DELETE, HTTP_PATCH of HTTP_OPTIONS worden aangeroepen waarna de response wordt ontvangen in een van de service afhankelijk formaat zoals HTML, JSON, XML etc.

Voorbeeld:
(Demo aanroep REST service)
{
 HttpClient HttpWeer
 Picture pPic
 ModelLink mImage
 String sXmlResponse, sXmlWeerBody, sXmlWeerData, sDag, sTempC, sWind
 String sImage, sTmp, sTyd, sDatGeldig, sLoc
 HttpConnect(HttpWeer,http://api.apixu.com)
 HttpSetParaMeter(HttpWeer,q=almere,nederland)
 HttpAddParaMeter(HttpWeer,num_of_days=5)
 HttpAddParaMeter(HttpWeer,key=190a4d1a86139e067c18124afef357d76a7f6d61)
 HttpMethod(HttpWeer,HTTP_GET,free/v1/weather.ashx,sXmlResponse)
 If XmlGetFirstElement(data,sXmlResponse,sXmlWeerBody)
  XmlGetElement(query,sXmlWeerBody,sLoc)
  If n=GetPos([sLoc],*, *)
   n = n - 2
   Copy(sPlaats,[#n sLoc])
   n = n + 2
   Copy(sLand,[>n sLoc])
  Endif
  If XmlGetFirstElement(current_condition,sXmlWeerBody,sXmlWeerData)
   XmlGetElement(Temp_C,sXmlWeerData,sTmp)
   Copy(sTempC,[sTmp]$(176)C)
   XmlGetElement(WeatherIconUrl,sXmlWeerData,sImage)
   n=Length([sImage])-12
   Copy(sImage,[>9#n sImage])
   SetPicture(pPic,[sImage])
   XmlGetElement(windspeedKmph,sXmlWeerData,sWind)
   XmlGetElement(winddir16Point,sXmlWeerData,sTmp)
   Copy(sWind,[sWind] km/h$(09)[sTmp])
   XmlGetElement(winddirDegree,sXmlWeerData,sTmp)
   Copy(sWind,[sWind] ([sTmp]$(176)))
   XmlGetElement(observation_time,sXmlWeerData,sTyd)
}
Geldig voor: [sLoc]
Vandaag [sTyd]

[sTempC]

[sWind]

[pPic]
{
   If XmlGetFirstElement(weather,sXmlWeerBody,sXmlWeerData)
    DoorGaan = True
    While DoorGaan
     XmlGetElement(date,sXmlWeerData,sDatGeldig)
     XmlGetElement(WeatherIconUrl,sXmlWeerData,sImage)
     n=Length([sImage])-12
     Copy(sImage,[>9#n sImage])
     SetPicture(pPic,[sImage])
     XmlGetElement(TempMinC,sXmlWeerData,sTmp)
     Copy(sTempC,[sTmp])
     XmlGetElement(TempMaxC,sXmlWeerData,sTmp)
     Copy(sTempC,[sTempC]-[sTmp]$(176)C)
     XmlGetElement(windspeedKmph,sXmlWeerData,sWind)
     XmlGetElement(winddir16Point,sXmlWeerData,sTmp)
     Copy(sWind,[sWind] km/h$(09)[sTmp])
     XmlGetElement(winddirDegree,sXmlWeerData,sTmp)
     Copy(sWind,[sWind] ([sTmp]$(176)))
}
[sDatGeldig]

[sTempC]

[sWind]

[pPic]
{
     DoorGaan = XmlGetNextElement(weather,sXmlWeerBody,sXmlWeerData)
    Wend
   Endif
  Endif
 Endif
}

Resultaat:
Geldig voor: Almere, Netherlands
Vandaag 12:47 AM

11C

7 km/h NE (50)

2014-10-30

11-15C

16 km/h SSE (163)

2014-10-31

12-17C

17 km/h S (187)

2014-11-01

12-17C

21 km/h SSW (193)

2014-11-02

10-16C

28 km/h SSW (212)

2014-11-03

8-14C

26 km/h SSW (206)