Sample code for 30+ languages & platforms
Dart

UPS Address Validation (City, State, Zip)

See more HTTP Misc Examples

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

Chilkat Dart Downloads

Dart
import 'package:chilkat/chilkat.dart';

void main() {
  // This example requires the Chilkat API to have been previously unlocked.
  // See Global Unlock Sample for sample code.

  final http = CkHttp();

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

  final sb = CkStringBuilder();
  final resp = CkHttpResponse();
  try {
    http.httpJson('POST', url, json, 'application/json', resp);
  } on ChilkatException catch (e) {
    print(e.lastErrorText);
    return;
  }

  print('status = ${resp.statusCode}');

  // A 200 response status indicate success.
  if (resp.statusCode != 200) {
    print(resp.bodyStr);
    print('Failed.');
    return;
  }

  json.load(resp.bodyStr);
  json.emitCompact = false;
  print(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.

  var customerContext = '';
  var statusCode = '';
  var statusDescription = '';
  var resultRank = '';
  var resultQuality = '';
  var city = '';
  var provinceCode = '';
  var postalCodeLowEnd = '';
  var postalCodeHighEnd = '';
  var rank = '';
  var quality = '';
  var addressCity = '';
  var addressStateProvinceCode = '';

  final numResults = json.sizeOfArray('AddressValidationResponse.AddressValidationResult');
  if (numResults < 0) {

    // Here's parse code for the above JSON exact response:
    customerContext = json.stringOf('AddressValidationResponse.Response.TransactionReference.CustomerContext');
    statusCode = json.stringOf('AddressValidationResponse.Response.ResponseStatusCode');
    statusDescription = json.stringOf('AddressValidationResponse.Response.ResponseStatusDescription');
    resultRank = json.stringOf('AddressValidationResponse.AddressValidationResult.Rank');
    resultQuality = json.stringOf('AddressValidationResponse.AddressValidationResult.Quality');
    city = json.stringOf('AddressValidationResponse.AddressValidationResult.Address.City');
    provinceCode = json.stringOf('AddressValidationResponse.AddressValidationResult.Address.StateProvinceCode');
    postalCodeLowEnd = json.stringOf('AddressValidationResponse.AddressValidationResult.PostalCodeLowEnd');
    postalCodeHighEnd = json.stringOf('AddressValidationResponse.AddressValidationResult.PostalCodeHighEnd');

    print('Exact match!');
    print('postal code: $postalCodeLowEnd');
  } else {

    print('Non-Exact match.');

    customerContext = json.stringOf('AddressValidationResponse.Response.TransactionReference.CustomerContext');
    statusCode = json.stringOf('AddressValidationResponse.Response.ResponseStatusCode');
    statusDescription = json.stringOf('AddressValidationResponse.Response.ResponseStatusDescription');
    var i = 0;
    while (i < numResults) {
      json.i = i;
      rank = json.stringOf('AddressValidationResponse.AddressValidationResult[i].Rank');
      print('rank: $rank');
      quality = json.stringOf('AddressValidationResponse.AddressValidationResult[i].Quality');
      addressCity = json.stringOf('AddressValidationResponse.AddressValidationResult[i].Address.City');
      print('addressCity: $addressCity');
      addressStateProvinceCode = json.stringOf('AddressValidationResponse.AddressValidationResult[i].Address.StateProvinceCode');
      postalCodeLowEnd = json.stringOf('AddressValidationResponse.AddressValidationResult[i].PostalCodeLowEnd');
      print('postal code: $postalCodeLowEnd');
      postalCodeHighEnd = json.stringOf('AddressValidationResponse.AddressValidationResult[i].PostalCodeHighEnd');
      i++;
    }
  }
}