Sample code for 30+ languages & platforms
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

PowerBuilder
integer li_rc
long 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
long li_NumResults
long 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