Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(PureBasic) UK Vehicle Data VRM LookupDemonstrates how to query the UK Vehicle Data VRM online API's. (See https://ukvehicledata.co.uk/)
IncludeFile "CkRest.pb" IncludeFile "CkJsonObject.pb" Procedure ChilkatExample() ; This example requires the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. rest.i = CkRest::ckCreate() If rest.i = 0 Debug "Failed to create object." ProcedureReturn EndIf ; Connect using TLS. bAutoReconnect.i = 1 success.i = CkRest::ckConnect(rest,"uk1.ukvehicledata.co.uk",443,1,bAutoReconnect) If success <> 1 Debug CkRest::ckLastErrorText(rest) CkRest::ckDispose(rest) ProcedureReturn EndIf ; Replace UKVD-API-KEY with your actual API KEY, ; which looks something like "abcdb1234-0abc-1235-abcf-1234c3d1abcd" CkRest::setCkAuthorization(rest, "ukvd-ipwhitelist UKVD-API-KEY") ; Replace "ABCDE" with a real VRM... CkRest::ckAddQueryParam(rest,"key_vrm","ABCDE") ; Add the Content-Type HTTP request header. ; success = rest.AddHeader("Content-Type","application/json; charset=UTF-8"); ; This request gets vehicle data. ; See below for a request to get battery data. jsonResponseStr.s = CkRest::ckFullRequestNoBody(rest,"GET","/api/datapackage/vehicledata") If CkRest::ckLastMethodSuccess(rest) <> 1 Debug CkRest::ckLastErrorText(rest) CkRest::ckDispose(rest) ProcedureReturn EndIf If CkRest::ckResponseStatusCode(rest) <> 200 Debug "Response Status Code = " + Str(CkRest::ckResponseStatusCode(rest)) Debug jsonResponseStr CkRest::ckDispose(rest) ProcedureReturn EndIf json.i = CkJsonObject::ckCreate() If json.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkJsonObject::ckLoad(json,jsonResponseStr) CkJsonObject::setCkEmitCompact(json, 0) ; Show the JSON response. Debug CkJsonObject::ckEmit(json) ; A sample vehicledata response will be as shown below. ; To get a few bits of data from the response: Debug "RequestGuid: " + CkJsonObject::ckStringOf(json,"RequestGuid") Debug "EngineNumber: " + CkJsonObject::ckStringOf(json,"DataItems.EngineNumber") Debug "Vrm: " + CkJsonObject::ckStringOf(json,"DataKeys.Vrm") ; { ; "RequestGuid": "xxxxxxxx-cc72-4b63-xxxxxxxxxxxx", ; "StatusCode": 0, ; "StatusMessage": "Success", ; "PackageId": "xxxxxxxx-a4bc-4a84-af22-xxxxxxxxxxxx", ; "PackageVersion": 1, ; "DataKeys": { ; "Vrm": "ABCDE" ; }, ; "DataItems": { ; "DriveAxle": "4x2", ; "Exported": "False", ; "DriverSeatPosition": "RHD", ; "EngineNumber": "LN910940728622", ; "Class": "Sport", ; "ImportedNorthernIreland": "False", ; "HistoryPreviousKeeperAcquisitionDate": "2013-01-12", ; "RoadFundLicenseSixMonth": "126.50", ; "EnginePowerBhp": "262", ; "SpecDateRangeFrom": "1987-10-01", ; "RegistrationDateUK": "1994-08-03", ; "SoundLevelDriveBy": "0", ; "RoadFundLicenseTwelveMonth": "235.00", ; "RoadFundLicenseBand": "Not available", ; "Vrm": "J5YVK", ; "TrimCode": "BA", ; "Derivative": "S4", ; "EngineSizeCc": "2174", ; "EngineCylinderCount": "4", ; "HistoryLatestV5cIssueDate": "2015-05-12", ; "Category": "Car", ; "HistoryPreviousKeeperCount": "9", ; "ConditionScrapped": "False", ; "EngineValveCount": "16", ; "WeightUnladen": "0", ; "RoadFundLicenseRenewalDate": "2017-04-01", ; "Model": "Esprit", ; "SpecDateRangeTo": "2003-06-01", ; "RoadFundLicenseCurrentStatus": "Tax not due", ; "BuildYear": "1994", ; "BuildDate": "1994-12-31", ; "VinLast4": "1448", ; "GearCount": "5", ; "SeatCount": "2", ; "Make": "Lotus", ; "Vin": "SCC082910RHA61448", ; "ColourChangeCount": "0", ; "DriveType": "Rear Wheel Drive", ; "WeightGross": "0", ; "EngineCode": "N/A", ; "EnginePowerKw": "193", ; "SoundLevelEngineSpeed": "0", ; "ConditionUnscrapped": "False", ; "HistoryPreviousKeeperDisposalDate": "2014-04-26", ; "EngineAlignment": "Longitudinal", ; "Imported": "False", ; "BodyType": "Coupe", ; "EnginePosition": "Mid", ; "TransmissionType": "Manual", ; "WeightFullyLaden": "0", ; "SoundLevelStationary": "0", ; "FuelType": "Petrol", ; "Colour": "YELLOW", ; "EngineSizeLitre": "2.2", ; "RegistrationDate": "1994-08-03", ; "Co2Emissions": "000", ; "WeightMaxTowingUnbraked": "0", ; "HistoryCurrentKeeperAcquisitionDate": "2015-04-25", ; "WeightMaxTowingBraked": "0", ; "DoorCount": "2", ; "EngineCylinderConfig": "Inline", ; "EngineFuelDelivery": "Turbo Injection" ; } ; } ; ----------------------------------------------------------------------------------- ; Now get battery data... jsonResponseStr = CkRest::ckFullRequestNoBody(rest,"GET","/api/datapackage/batterydata") If CkRest::ckLastMethodSuccess(rest) <> 1 Debug CkRest::ckLastErrorText(rest) CkRest::ckDispose(rest) CkJsonObject::ckDispose(json) ProcedureReturn EndIf If CkRest::ckResponseStatusCode(rest) <> 200 Debug "Response Status Code = " + Str(CkRest::ckResponseStatusCode(rest)) Debug jsonResponseStr CkRest::ckDispose(rest) CkJsonObject::ckDispose(json) ProcedureReturn EndIf CkJsonObject::ckLoad(json,jsonResponseStr) ; Show the JSON response containing battery data. Debug CkJsonObject::ckEmit(json) ; To get a few pieces of information out of the response... numBatteries.i = CkJsonObject::ckSizeOfArray(json,"DataItems.BatteryList") i.i = 0 While (i < numBatteries) CkJsonObject::setCkI(json, i) Debug "---- Battery " + Str(i) + ":" Debug " Type = " + CkJsonObject::ckStringOf(json,"DataItems.BatteryList[I].Type") Debug " LayoutImage = " + CkJsonObject::ckStringOf(json,"DataItems.BatteryList[I].LayoutImage") Debug " TerminalCode = " + CkJsonObject::ckStringOf(json,"DataItems.BatteryList[I].TerminalCode") i = i + 1 Wend ; The battery data looks like this: ; { ; "RequestGuid": "xxxxxxxx-5030-4b3d-a2ed-xxxxxxxxxxxx", ; "StatusCode": 0, ; "StatusMessage": "Success", ; "PackageId": "xxxxxxxx-9ec2-4fd3-9247-xxxxxxxxxxxx", ; "PackageVersion": 1, ; "DataKeys": { ; "Vrm": "ABCDE" ; }, ; "DataItems": { ; "BatteryList": [ ; { ; "Type": "Primary", ; "UkRef": "075", ; "LayoutCode": "0", ; "LayoutImage": "http://cdn.ukvehicledata.co.uk/battery/layout/0.png", ; "TerminalCode": "T1", ; "TerminalImage": "http://cdn.ukvehicledata.co.uk/battery/terminal/T1.png", ; "HoldDownCode": "B13", ; "HoldDownImage": "http://cdn.ukvehicledata.co.uk/battery/holddown/B13.png" ; } ; ], ; "BatteryCount": "1" ; } ; } CkRest::ckDispose(rest) CkJsonObject::ckDispose(json) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.