PowerBuilder
PowerBuilder
UPS Address Validation (City, State, Zip)
See more HTTP Misc Examples
Demonstrates making a call to the UPS address validation REST API.Chilkat PowerBuilder Downloads
integer li_rc
integer li_Success
oleobject loo_Http
string ls_Url
oleobject loo_Json
oleobject loo_Sb
oleobject loo_Resp
string ls_CustomerContext
string ls_StatusCode
string ls_StatusDescription
string ls_ResultRank
string ls_ResultQuality
string ls_City
string ls_ProvinceCode
string ls_PostalCodeLowEnd
string ls_PostalCodeHighEnd
string ls_Rank
string ls_Quality
string ls_AddressCity
string ls_AddressStateProvinceCode
integer li_NumResults
integer i
li_Success = 0
// This example requires the Chilkat API to have been previously unlocked.
// See Global Unlock Sample for sample code.
loo_Http = create oleobject
li_rc = loo_Http.ConnectToNewObject("Chilkat.Http")
if li_rc < 0 then
destroy loo_Http
MessageBox("Error","Connecting to COM object failed")
return
end if
// This is the testing endpoint for address validation:
ls_Url = "https://wwwcie.ups.com/rest/AV"
// 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.
loo_Json = create oleobject
li_rc = loo_Json.ConnectToNewObject("Chilkat.JsonObject")
loo_Json.UpdateString("AccessRequest.AccessLicenseNumber","UPS_ACCESS_KEY")
loo_Json.UpdateString("AccessRequest.UserId","UPS_USERNAME")
loo_Json.UpdateString("AccessRequest.Password","UPS_PASSWORD")
loo_Json.UpdateString("AddressValidationRequest.Request.TransactionReference.CustomerContext","Your Customer Context")
loo_Json.UpdateString("AddressValidationRequest.Request.RequestAction","AV")
loo_Json.UpdateString("AddressValidationRequest.Address.City","ALPHARETTA")
// We're making an intentional mistake here by passing CA instead of GA.
loo_Json.UpdateString("AddressValidationRequest.Address.StateProvinceCode","CA")
loo_Json.UpdateString("AddressValidationRequest.Address.PostalCode","30005")
loo_Sb = create oleobject
li_rc = loo_Sb.ConnectToNewObject("Chilkat.StringBuilder")
loo_Resp = create oleobject
li_rc = loo_Resp.ConnectToNewObject("Chilkat.HttpResponse")
li_Success = loo_Http.HttpJson("POST",ls_Url,loo_Json,"application/json",loo_Resp)
if li_Success = 0 then
Write-Debug loo_Http.LastErrorText
destroy loo_Http
destroy loo_Json
destroy loo_Sb
destroy loo_Resp
return
end if
Write-Debug "status = " + string(loo_Resp.StatusCode)
// A 200 response status indicate success.
if loo_Resp.StatusCode <> 200 then
Write-Debug loo_Resp.BodyStr
Write-Debug "Failed."
destroy loo_Http
destroy loo_Json
destroy loo_Sb
destroy loo_Resp
return
end if
loo_Json.Load(loo_Resp.BodyStr)
loo_Json.EmitCompact = 0
Write-Debug loo_Json.Emit()
// 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.
li_NumResults = loo_Json.SizeOfArray("AddressValidationResponse.AddressValidationResult")
if li_NumResults < 0 then
// Here's parse code for the above JSON exact response:
ls_CustomerContext = loo_Json.StringOf("AddressValidationResponse.Response.TransactionReference.CustomerContext")
ls_StatusCode = loo_Json.StringOf("AddressValidationResponse.Response.ResponseStatusCode")
ls_StatusDescription = loo_Json.StringOf("AddressValidationResponse.Response.ResponseStatusDescription")
ls_ResultRank = loo_Json.StringOf("AddressValidationResponse.AddressValidationResult.Rank")
ls_ResultQuality = loo_Json.StringOf("AddressValidationResponse.AddressValidationResult.Quality")
ls_City = loo_Json.StringOf("AddressValidationResponse.AddressValidationResult.Address.City")
ls_ProvinceCode = loo_Json.StringOf("AddressValidationResponse.AddressValidationResult.Address.StateProvinceCode")
ls_PostalCodeLowEnd = loo_Json.StringOf("AddressValidationResponse.AddressValidationResult.PostalCodeLowEnd")
ls_PostalCodeHighEnd = loo_Json.StringOf("AddressValidationResponse.AddressValidationResult.PostalCodeHighEnd")
Write-Debug "Exact match!"
Write-Debug "postal code: " + ls_PostalCodeLowEnd
else
Write-Debug "Non-Exact match."
ls_CustomerContext = loo_Json.StringOf("AddressValidationResponse.Response.TransactionReference.CustomerContext")
ls_StatusCode = loo_Json.StringOf("AddressValidationResponse.Response.ResponseStatusCode")
ls_StatusDescription = loo_Json.StringOf("AddressValidationResponse.Response.ResponseStatusDescription")
i = 0
do while i < li_NumResults
loo_Json.I = i
ls_Rank = loo_Json.StringOf("AddressValidationResponse.AddressValidationResult[i].Rank")
Write-Debug "rank: " + ls_Rank
ls_Quality = loo_Json.StringOf("AddressValidationResponse.AddressValidationResult[i].Quality")
ls_AddressCity = loo_Json.StringOf("AddressValidationResponse.AddressValidationResult[i].Address.City")
Write-Debug "addressCity: " + ls_AddressCity
ls_AddressStateProvinceCode = loo_Json.StringOf("AddressValidationResponse.AddressValidationResult[i].Address.StateProvinceCode")
ls_PostalCodeLowEnd = loo_Json.StringOf("AddressValidationResponse.AddressValidationResult[i].PostalCodeLowEnd")
Write-Debug "postal code: " + ls_PostalCodeLowEnd
ls_PostalCodeHighEnd = loo_Json.StringOf("AddressValidationResponse.AddressValidationResult[i].PostalCodeHighEnd")
i = i + 1
loop
end if
destroy loo_Http
destroy loo_Json
destroy loo_Sb
destroy loo_Resp