Sample code for 30+ languages & platforms
AutoIt

UPS Address Validation (City, State, Zip)

See more HTTP Misc Examples

Demonstrates making a call to the UPS address validation REST API.

Chilkat AutoIt Downloads

AutoIt
Local $bSuccess = False

; This example requires the Chilkat API to have been previously unlocked.
; See Global Unlock Sample for sample code.

$oHttp = ObjCreate("Chilkat.Http")

; This is the testing endpoint for address validation:
Local $sUrl = "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.
$oJson = ObjCreate("Chilkat.JsonObject")
$oJson.UpdateString("AccessRequest.AccessLicenseNumber","UPS_ACCESS_KEY")
$oJson.UpdateString("AccessRequest.UserId","UPS_USERNAME")
$oJson.UpdateString("AccessRequest.Password","UPS_PASSWORD")
$oJson.UpdateString("AddressValidationRequest.Request.TransactionReference.CustomerContext","Your Customer Context")
$oJson.UpdateString("AddressValidationRequest.Request.RequestAction","AV")
$oJson.UpdateString("AddressValidationRequest.Address.City","ALPHARETTA")
; We're making an intentional mistake here by passing CA instead of GA.
$oJson.UpdateString("AddressValidationRequest.Address.StateProvinceCode","CA")
$oJson.UpdateString("AddressValidationRequest.Address.PostalCode","30005")

$oSb = ObjCreate("Chilkat.StringBuilder")
$oResp = ObjCreate("Chilkat.HttpResponse")
$bSuccess = $oHttp.HttpJson("POST",$sUrl,$oJson,"application/json",$oResp)
If ($bSuccess = False) Then
    ConsoleWrite($oHttp.LastErrorText & @CRLF)
    Exit
EndIf

ConsoleWrite("status = " & $oResp.StatusCode & @CRLF)

; A 200 response status indicate success.
If ($oResp.StatusCode <> 200) Then
    ConsoleWrite($oResp.BodyStr & @CRLF)
    ConsoleWrite("Failed." & @CRLF)
    Exit
EndIf

$oJson.Load($oResp.BodyStr)
$oJson.EmitCompact = False
ConsoleWrite($oJson.Emit() & @CRLF)

; 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.

Local $sCustomerContext
Local $statusCode
Local $statusDescription
Local $sResultRank
Local $sResultQuality
Local $sCity
Local $sProvinceCode
Local $sPostalCodeLowEnd
Local $sPostalCodeHighEnd
Local $sRank
Local $sQuality
Local $sAddressCity
Local $sAddressStateProvinceCode

Local $iNumResults = $oJson.SizeOfArray("AddressValidationResponse.AddressValidationResult")
If ($iNumResults < 0) Then

    ; Here's parse code for the above JSON exact response:
    $sCustomerContext = $oJson.StringOf("AddressValidationResponse.Response.TransactionReference.CustomerContext")
    $statusCode = $oJson.StringOf("AddressValidationResponse.Response.ResponseStatusCode")
    $statusDescription = $oJson.StringOf("AddressValidationResponse.Response.ResponseStatusDescription")
    $sResultRank = $oJson.StringOf("AddressValidationResponse.AddressValidationResult.Rank")
    $sResultQuality = $oJson.StringOf("AddressValidationResponse.AddressValidationResult.Quality")
    $sCity = $oJson.StringOf("AddressValidationResponse.AddressValidationResult.Address.City")
    $sProvinceCode = $oJson.StringOf("AddressValidationResponse.AddressValidationResult.Address.StateProvinceCode")
    $sPostalCodeLowEnd = $oJson.StringOf("AddressValidationResponse.AddressValidationResult.PostalCodeLowEnd")
    $sPostalCodeHighEnd = $oJson.StringOf("AddressValidationResponse.AddressValidationResult.PostalCodeHighEnd")

    ConsoleWrite("Exact match!" & @CRLF)
    ConsoleWrite("postal code: " & $sPostalCodeLowEnd & @CRLF)

Else

    ConsoleWrite("Non-Exact match." & @CRLF)

    $sCustomerContext = $oJson.StringOf("AddressValidationResponse.Response.TransactionReference.CustomerContext")
    $statusCode = $oJson.StringOf("AddressValidationResponse.Response.ResponseStatusCode")
    $statusDescription = $oJson.StringOf("AddressValidationResponse.Response.ResponseStatusDescription")
Local $i = 0
    While $i < $iNumResults
        $oJson.I = $i
        $sRank = $oJson.StringOf("AddressValidationResponse.AddressValidationResult[i].Rank")
        ConsoleWrite("rank: " & $sRank & @CRLF)
        $sQuality = $oJson.StringOf("AddressValidationResponse.AddressValidationResult[i].Quality")
        $sAddressCity = $oJson.StringOf("AddressValidationResponse.AddressValidationResult[i].Address.City")
        ConsoleWrite("addressCity: " & $sAddressCity & @CRLF)
        $sAddressStateProvinceCode = $oJson.StringOf("AddressValidationResponse.AddressValidationResult[i].Address.StateProvinceCode")
        $sPostalCodeLowEnd = $oJson.StringOf("AddressValidationResponse.AddressValidationResult[i].PostalCodeLowEnd")
        ConsoleWrite("postal code: " & $sPostalCodeLowEnd & @CRLF)
        $sPostalCodeHighEnd = $oJson.StringOf("AddressValidationResponse.AddressValidationResult[i].PostalCodeHighEnd")
        $i = $i + 1
    Wend
EndIf