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) Shippo Validate Global AddressDemonstrates how to validate a global address. For more information, see https://goshippo.com/docs/address-validation/
IncludeFile "CkHttpResponse.pb" IncludeFile "CkHttp.pb" IncludeFile "CkStringBuilder.pb" IncludeFile "CkJsonObject.pb" IncludeFile "CkHttpRequest.pb" Procedure ChilkatExample() ; This example assumes the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. http.i = CkHttp::ckCreate() If http.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success.i ; Implements the following CURL command: ; curl https://api.goshippo.com/addresses/ \ ; -H "Authorization: ShippoToken <API_TOKEN>" \ ; -d name="Shawn Ippotle" \ ; -d company="Shippo" \ ; -d street1="Kortrijksesteenweg 1005" \ ; -d city="Gent" \ ; -d zip=9000 \ ; -d country="BE" \ ; -d email="shippotle@goshippo.com"\ ; -d validate=true req.i = CkHttpRequest::ckCreate() If req.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkHttpRequest::setCkHttpVerb(req, "POST") CkHttpRequest::setCkPath(req, "/addresses/") CkHttpRequest::setCkContentType(req, "application/x-www-form-urlencoded") CkHttpRequest::ckAddParam(req,"name","Shawn Ippotle") CkHttpRequest::ckAddParam(req,"company","Shippo") CkHttpRequest::ckAddParam(req,"street1","Kortrijksesteenweg 1005") CkHttpRequest::ckAddParam(req,"city","Gent") CkHttpRequest::ckAddParam(req,"zip","9000") CkHttpRequest::ckAddParam(req,"country","BE") CkHttpRequest::ckAddParam(req,"email","shippotle@goshippo.com") CkHttpRequest::ckAddParam(req,"validate","true") CkHttpRequest::ckAddHeader(req,"Authorization","ShippoToken <API_TOKEN>") resp.i = CkHttp::ckPostUrlEncoded(http,"https://api.goshippo.com/addresses/",req) If CkHttp::ckLastMethodSuccess(http) = 0 Debug CkHttp::ckLastErrorText(http) CkHttp::ckDispose(http) CkHttpRequest::ckDispose(req) ProcedureReturn EndIf sbResponseBody.i = CkStringBuilder::ckCreate() If sbResponseBody.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkHttpResponse::ckGetBodySb(resp,sbResponseBody) jResp.i = CkJsonObject::ckCreate() If jResp.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkJsonObject::ckLoadSb(jResp,sbResponseBody) CkJsonObject::setCkEmitCompact(jResp, 0) Debug "Response Body:" Debug CkJsonObject::ckEmit(jResp) respStatusCode.i = CkHttpResponse::ckStatusCode(resp) Debug "Response Status Code = " + Str(respStatusCode) If respStatusCode >= 400 Debug "Response Header:" Debug CkHttpResponse::ckHeader(resp) Debug "Failed." CkHttpResponse::ckDispose(resp) CkHttp::ckDispose(http) CkHttpRequest::ckDispose(req) CkStringBuilder::ckDispose(sbResponseBody) CkJsonObject::ckDispose(jResp) ProcedureReturn EndIf CkHttpResponse::ckDispose(resp) ; Sample JSON response: ; (Sample code for parsing the JSON response is shown below) ; { ; "object_created": "2017-07-26T17:52:37.305Z", ; "object_updated": "2017-07-26T17:52:37.351Z", ; "object_id": "b7f9709df3914d1ca6efe4c30e7b0572", ; "is_complete": true, ; "validation_results": { ; "is_valid": true, ; "messages": [ ; { ; "source": "Shippo Address Validator", ; "type": "address_correction", ; "code": "administrative_area_change", ; "text": "The administrative area (state or province) was added or changed." ; }, ; { ; "source": "Shippo Address Validator", ; "code": "geocoded_rooftop", ; "text": "The record was geocoded down to rooftop level, meaning the point is within the property boundaries (most often the center)." ; }, ; { ; "source": "Shippo Address Validator", ; "code": "premises_full", ; "text": "The address has been verified to the Premise (House or Building) Level, which is the highest level possible with the reference data." ; } ; ] ; }, ; "object_owner": "hippo@goshippo.com", ; "name": "Hippo Shippo", ; "company": "Shippo", ; "street_no": "2", ; "street1": "Unter den Linden", ; "street2": "", ; "street3": "", ; "city": "Berlin", ; "state": "", ; "zip": "10117", ; "country": "DE", ; "longitude": "13.39751", ; "latitude": "52.51785", ; "phone": "14151234567", ; "email": "hippo@goshippo.com", ; "is_residential": null, ; "metadata": "", ; "test": false ; } ; Sample code for parsing the JSON response... ; Use the following online tool to generate parsing code from sample JSON: ; Generate Parsing Code from JSON source.s v_type.s code.s text.s object_created.s = CkJsonObject::ckStringOf(jResp,"object_created") object_updated.s = CkJsonObject::ckStringOf(jResp,"object_updated") object_id.s = CkJsonObject::ckStringOf(jResp,"object_id") is_complete.i = CkJsonObject::ckBoolOf(jResp,"is_complete") validation_resultsIs_valid.i = CkJsonObject::ckBoolOf(jResp,"validation_results.is_valid") object_owner.s = CkJsonObject::ckStringOf(jResp,"object_owner") name.s = CkJsonObject::ckStringOf(jResp,"name") company.s = CkJsonObject::ckStringOf(jResp,"company") street_no.s = CkJsonObject::ckStringOf(jResp,"street_no") street1.s = CkJsonObject::ckStringOf(jResp,"street1") street2.s = CkJsonObject::ckStringOf(jResp,"street2") street3.s = CkJsonObject::ckStringOf(jResp,"street3") city.s = CkJsonObject::ckStringOf(jResp,"city") state.s = CkJsonObject::ckStringOf(jResp,"state") zip.s = CkJsonObject::ckStringOf(jResp,"zip") country.s = CkJsonObject::ckStringOf(jResp,"country") longitude.s = CkJsonObject::ckStringOf(jResp,"longitude") latitude.s = CkJsonObject::ckStringOf(jResp,"latitude") phone.s = CkJsonObject::ckStringOf(jResp,"phone") email.s = CkJsonObject::ckStringOf(jResp,"email") is_residential.s = CkJsonObject::ckStringOf(jResp,"is_residential") metadata.s = CkJsonObject::ckStringOf(jResp,"metadata") test.i = CkJsonObject::ckBoolOf(jResp,"test") i.i = 0 count_i.i = CkJsonObject::ckSizeOfArray(jResp,"validation_results.messages") While i < count_i CkJsonObject::setCkI(jResp, i) source = CkJsonObject::ckStringOf(jResp,"validation_results.messages[i].source") v_type = CkJsonObject::ckStringOf(jResp,"validation_results.messages[i].type") code = CkJsonObject::ckStringOf(jResp,"validation_results.messages[i].code") text = CkJsonObject::ckStringOf(jResp,"validation_results.messages[i].text") i = i + 1 Wend CkHttp::ckDispose(http) CkHttpRequest::ckDispose(req) CkStringBuilder::ckDispose(sbResponseBody) CkJsonObject::ckDispose(jResp) ProcedureReturn EndProcedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.