DataFlex
DataFlex
UPS Address Validation (City, State, Zip)
See more HTTP Misc Examples
Demonstrates making a call to the UPS address validation REST API.Chilkat DataFlex Downloads
Use ChilkatAx-win32.pkg
Procedure Test
Boolean iSuccess
Handle hoHttp
String sUrl
Variant vJson
Handle hoJson
Handle hoSb
Variant vResp
Handle hoResp
String sCustomerContext
String sStatusCode
String sStatusDescription
String sResultRank
String sResultQuality
String sCity
String sProvinceCode
String sPostalCodeLowEnd
String sPostalCodeHighEnd
String sRank
String sQuality
String sAddressCity
String sAddressStateProvinceCode
Integer iNumResults
Integer i
String sTemp1
Integer iTemp1
Move False To iSuccess
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
Get Create (RefClass(cComChilkatHttp)) To hoHttp
If (Not(IsComObjectCreated(hoHttp))) Begin
Send CreateComObject of hoHttp
End
// This is the testing endpoint for address validation:
Move "https://wwwcie.ups.com/rest/AV" To sUrl
// Send an HTTP request with the following JSON body:
// {
// "AccessRequest": {
// "AccessLicenseNumber": "Your Access License Number",
// "UserId": "Your Username",
// "Password": "Your Password"
// },
// "AddressValidationRequest": {
// "Request": {
// "TransactionReference": {
// "CustomerContext": "Your Customer Context"
// },
// "RequestAction": "AV"
// },
// "Address": {
// "City": "ALPHARETTA",
// "StateProvinceCode": "GA",
// "PostalCode": "30005"
// }
// }
// }
// Build the above JSON.
Get Create (RefClass(cComChilkatJsonObject)) To hoJson
If (Not(IsComObjectCreated(hoJson))) Begin
Send CreateComObject of hoJson
End
Get ComUpdateString Of hoJson "AccessRequest.AccessLicenseNumber" "UPS_ACCESS_KEY" To iSuccess
Get ComUpdateString Of hoJson "AccessRequest.UserId" "UPS_USERNAME" To iSuccess
Get ComUpdateString Of hoJson "AccessRequest.Password" "UPS_PASSWORD" To iSuccess
Get ComUpdateString Of hoJson "AddressValidationRequest.Request.TransactionReference.CustomerContext" "Your Customer Context" To iSuccess
Get ComUpdateString Of hoJson "AddressValidationRequest.Request.RequestAction" "AV" To iSuccess
Get ComUpdateString Of hoJson "AddressValidationRequest.Address.City" "ALPHARETTA" To iSuccess
// We're making an intentional mistake here by passing CA instead of GA.
Get ComUpdateString Of hoJson "AddressValidationRequest.Address.StateProvinceCode" "CA" To iSuccess
Get ComUpdateString Of hoJson "AddressValidationRequest.Address.PostalCode" "30005" To iSuccess
Get Create (RefClass(cComChilkatStringBuilder)) To hoSb
If (Not(IsComObjectCreated(hoSb))) Begin
Send CreateComObject of hoSb
End
Get Create (RefClass(cComChilkatHttpResponse)) To hoResp
If (Not(IsComObjectCreated(hoResp))) Begin
Send CreateComObject of hoResp
End
Get pvComObject of hoJson to vJson
Get pvComObject of hoResp to vResp
Get ComHttpJson Of hoHttp "POST" sUrl vJson "application/json" vResp To iSuccess
If (iSuccess = False) Begin
Get ComLastErrorText Of hoHttp To sTemp1
Showln sTemp1
Procedure_Return
End
Get ComStatusCode Of hoResp To iTemp1
Showln "status = " iTemp1
// A 200 response status indicate success.
Get ComStatusCode Of hoResp To iTemp1
If (iTemp1 <> 200) Begin
Get ComBodyStr Of hoResp To sTemp1
Showln sTemp1
Showln "Failed."
Procedure_Return
End
Get ComBodyStr Of hoResp To sTemp1
Get ComLoad Of hoJson sTemp1 To iSuccess
Set ComEmitCompact Of hoJson To False
Get ComEmit Of hoJson To sTemp1
Showln sTemp1
// A successful exact response looks like this:
// {
// "AddressValidationResponse": {
// "Response": {
// "TransactionReference": {
// "CustomerContext": "Your Customer Context"
// },
// "ResponseStatusCode": "1",
// "ResponseStatusDescription": "Success"
// },
// "AddressValidationResult": {
// "Rank": "1",
// "Quality": "1.0",
// "Address": {
// "City": "ALPHARETTA",
// "StateProvinceCode": "GA"
// },
// "PostalCodeLowEnd": "30005",
// "PostalCodeHighEnd": "30005"
// }
// }
// }
//
// A successful response that was not an exact match provides an array of closest matches, like this:
// {
// "AddressValidationResponse": {
// "Response": {
// "TransactionReference": {
// "CustomerContext": "Your Customer Context"
// "Quality": "0.9875",
// "Address": {
// },
// "ResponseStatusCode": "1",
// "ResponseStatusDescription": "Success"
// },
// "AddressValidationResult": [
// {
// "Rank": "1",
// "City": "ALPHARETTA",
// "StateProvinceCode": "GA"
// },
// "PostalCodeLowEnd": "30005",
// "PostalCodeHighEnd": "30005"
// },
// {
// "Rank": "2",
// "Quality": "0.9750",
// "Address": {
// "City": "ALPHARETTA",
// "StateProvinceCode": "GA"
// },
// "PostalCodeLowEnd": "30004",
// "PostalCodeHighEnd": "30004"
// },
// {
// "Rank": "3",
// "Quality": "0.9750",
// "Address": {
// "City": "ALPHARETTA",
// "StateProvinceCode": "GA"
// },
// "PostalCodeLowEnd": "30009",
// "PostalCodeHighEnd": "30009"
// }
// ]
// }
// }
// Use the online tool at Generate JSON Parsing Code
// to generate JSON parsing code.
Get ComSizeOfArray Of hoJson "AddressValidationResponse.AddressValidationResult" To iNumResults
If (iNumResults < 0) Begin
// Here's parse code for the above JSON exact response:
Get ComStringOf Of hoJson "AddressValidationResponse.Response.TransactionReference.CustomerContext" To sCustomerContext
Get ComStringOf Of hoJson "AddressValidationResponse.Response.ResponseStatusCode" To sStatusCode
Get ComStringOf Of hoJson "AddressValidationResponse.Response.ResponseStatusDescription" To sStatusDescription
Get ComStringOf Of hoJson "AddressValidationResponse.AddressValidationResult.Rank" To sResultRank
Get ComStringOf Of hoJson "AddressValidationResponse.AddressValidationResult.Quality" To sResultQuality
Get ComStringOf Of hoJson "AddressValidationResponse.AddressValidationResult.Address.City" To sCity
Get ComStringOf Of hoJson "AddressValidationResponse.AddressValidationResult.Address.StateProvinceCode" To sProvinceCode
Get ComStringOf Of hoJson "AddressValidationResponse.AddressValidationResult.PostalCodeLowEnd" To sPostalCodeLowEnd
Get ComStringOf Of hoJson "AddressValidationResponse.AddressValidationResult.PostalCodeHighEnd" To sPostalCodeHighEnd
Showln "Exact match!"
Showln "postal code: " sPostalCodeLowEnd
End
Else Begin
Showln "Non-Exact match."
Get ComStringOf Of hoJson "AddressValidationResponse.Response.TransactionReference.CustomerContext" To sCustomerContext
Get ComStringOf Of hoJson "AddressValidationResponse.Response.ResponseStatusCode" To sStatusCode
Get ComStringOf Of hoJson "AddressValidationResponse.Response.ResponseStatusDescription" To sStatusDescription
Move 0 To i
While (i < iNumResults)
Set ComI Of hoJson To i
Get ComStringOf Of hoJson "AddressValidationResponse.AddressValidationResult[i].Rank" To sRank
Showln "rank: " sRank
Get ComStringOf Of hoJson "AddressValidationResponse.AddressValidationResult[i].Quality" To sQuality
Get ComStringOf Of hoJson "AddressValidationResponse.AddressValidationResult[i].Address.City" To sAddressCity
Showln "addressCity: " sAddressCity
Get ComStringOf Of hoJson "AddressValidationResponse.AddressValidationResult[i].Address.StateProvinceCode" To sAddressStateProvinceCode
Get ComStringOf Of hoJson "AddressValidationResponse.AddressValidationResult[i].PostalCodeLowEnd" To sPostalCodeLowEnd
Showln "postal code: " sPostalCodeLowEnd
Get ComStringOf Of hoJson "AddressValidationResponse.AddressValidationResult[i].PostalCodeHighEnd" To sPostalCodeHighEnd
Move (i + 1) To i
Loop
End
End_Procedure