Visual FoxPro
Visual FoxPro
hotelbeds.com REST API Authentication
See more HTTP Misc Examples
Demonstrates how to calculate the X-Signature header and add to requests sent to api.test.hotelbeds.com.Chilkat Visual FoxPro Downloads
LOCAL lnSuccess
LOCAL loDt
LOCAL lnBLocalTime
LOCAL lcUnixTimeStr
LOCAL lcApiKey
LOCAL lcSecret
LOCAL loSb
LOCAL loCrypt
LOCAL lcSignature
LOCAL loHttp
LOCAL lcJsonResponse
lnSuccess = 0
* This example requires the Chilkat API to have been previously unlocked.
* See Global Unlock Sample for sample code.
* This example duplicates the following CURL statement provided in the hotelbeds.com "Getting Started"
* developer documentation:
* #!/bin/bash
* apiKey="yourApiKey"
* secret="yourSecret"
* curl -i \
* -X GET \
* -H 'Accept:application/json' \
* -H 'Api-key:'$apiKey'' \
* -H 'X-Signature:'$(echo -n ${apiKey}${secret}$(date +%s)|sha256sum|awk '{ print $1}')'' \
* https://api.test.hotelbeds.com/hotel-api/1.0/status
* The "date + %s" command emits a UNIX date/time number such as 1605548842
* We need to concatenate the apiKey, secret, and current date/time in UNIX (numeric) time format.
loDt = CreateObject('Chilkat.CkDateTime')
loDt.SetFromCurrentSystemTime()
* Get the UNIX time string in the GMT timezone.
lnBLocalTime = 0
lcUnixTimeStr = loDt.GetAsUnixTimeStr(lnBLocalTime)
? lcUnixTimeStr
* Use your own API key and secret. (These are not valid values)
lcApiKey = "227b20a2cb705e45f3b0a0944672dc07"
lcSecret = "54dc7ba9e2"
loSb = CreateObject('Chilkat.StringBuilder')
loSb.Append(lcApiKey)
loSb.Append(lcSecret)
loSb.Append(lcUnixTimeStr)
loCrypt = CreateObject('Chilkat.Crypt2')
loCrypt.HashAlgorithm = "sha256"
loCrypt.EncodingMode = "hexlower"
lcSignature = loCrypt.HashStringENC(loSb.GetAsString())
? lcSignature
loHttp = CreateObject('Chilkat.Http')
loHttp.SetRequestHeader("Accept","application/json")
loHttp.SetRequestHeader("Api-key",lcApiKey)
loHttp.SetRequestHeader("X-Signature",lcSignature)
lcJsonResponse = loHttp.QuickGetStr("https://api.test.hotelbeds.com/hotel-api/1.0/status")
? lcJsonResponse
? STR(loHttp.LastStatus)
* Sample output:
* 1605549542
* 2146aefb36e7331b3b29aafd7638398ca22e689573224f1a71274d60bd201ec2
* {"auditData":{"timestamp":"2020-11-16 18:59:02.430"},"status":"OK"}
* 200
RELEASE loDt
RELEASE loSb
RELEASE loCrypt
RELEASE loHttp