Sample code for 30+ languages & platforms
React Native

UPS Address Validation (City, State, Zip)

See more HTTP Misc Examples

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

Chilkat React Native Downloads

React Native
import { Http, HttpResponse, JsonObject, StringBuilder } from '@chilkat/react-native'

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

  const http = new Http();

  // This is the testing endpoint for address validation:
  const 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.
  const json = new JsonObject();
  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');

  const sb = new StringBuilder();
  const resp = new HttpResponse();
  try {
    await http.httpJsonAsync('POST', url, json, 'application/json', resp);
  } catch {
    console.log(http.lastErrorText);
    return;
  }

  console.log(`status = ${resp.statusCode}`);

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

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

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

  const 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');

    console.log('Exact match!');
    console.log(`postal code: ${postalCodeLowEnd}`);
  } else {

    console.log('Non-Exact match.');

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