Delphi DLL EasyPost: EasyPost Address Verification Error

Back to Index

Create an address, but with a verification error and shows how to get the error response information.

Documentation: https://www.easypost.com/docs/api#addresses

CURL Command

curl -X POST https://api.easypost.com/v2/addresses \
  -u EASYPOST_API_KEY: \
  -d "verify[]=delivery" \
  -d "address[street1]=UNDELIVERABLE ST" \
  -d "address[city]=SAN FRANCISCO" \
  -d "address[state]=CA" \
  -d "address[zip]=94104" \
  -d "address[country]=US" \
  -d "address[company]=EasyPost" \
  -d "address[phone]=415-123-4567"

Delphi DLL Example

var
rest: HCkRest;
success: Boolean;
bTls: Boolean;
port: Integer;
bAutoReconnect: Boolean;
strResponseBody: PWideChar;
jsonResponse: HCkJsonObject;
id: PWideChar;
object: PWideChar;
created_at: PWideChar;
updated_at: PWideChar;
name: Boolean;
company: PWideChar;
street1: PWideChar;
street2: Boolean;
city: PWideChar;
state: PWideChar;
zip: PWideChar;
country: PWideChar;
phone: PWideChar;
email: Boolean;
mode: PWideChar;
carrier_facility: Boolean;
residential: Boolean;
federal_tax_id: Boolean;
state_tax_id: Boolean;
verificationsDeliverySuccess: Boolean;
i: Integer;
count_i: Integer;
suggestion: Boolean;
code: PWideChar;
field: PWideChar;
message: PWideChar;

begin
rest := CkRest_Create();

//  URL: https://api.easypost.com/v2/addresses
bTls := True;
port := 443;
bAutoReconnect := True;
success := CkRest_Connect(rest,'api.easypost.com',port,bTls,bAutoReconnect);
if (success <> True) then
  begin
    Memo1.Lines.Add('ConnectFailReason: ' + IntToStr(CkRest_getConnectFailReason(rest)));
    Memo1.Lines.Add(CkRest__lastErrorText(rest));
    Exit;
  end;

CkRest_SetAuthBasic(rest,'EASYPOST_API_KEY','');

CkRest_AddQueryParam(rest,'verify[]','delivery');
CkRest_AddQueryParam(rest,'address[street1]','UNDELIVERABLE ST');
CkRest_AddQueryParam(rest,'address[city]','SAN FRANCISCO');
CkRest_AddQueryParam(rest,'address[state]','CA');
CkRest_AddQueryParam(rest,'address[zip]','94104');
CkRest_AddQueryParam(rest,'address[country]','US');
CkRest_AddQueryParam(rest,'address[company]','EasyPost');
CkRest_AddQueryParam(rest,'address[phone]','415-123-4567');

strResponseBody := CkRest__fullRequestFormUrlEncoded(rest,'POST','/v2/addresses');
if (CkRest_getLastMethodSuccess(rest) <> True) then
  begin
    Memo1.Lines.Add(CkRest__lastErrorText(rest));
    Exit;
  end;

jsonResponse := CkJsonObject_Create();
CkJsonObject_Load(jsonResponse,strResponseBody);

id := CkJsonObject__stringOf(jsonResponse,'id');
object := CkJsonObject__stringOf(jsonResponse,'object');
created_at := CkJsonObject__stringOf(jsonResponse,'created_at');
updated_at := CkJsonObject__stringOf(jsonResponse,'updated_at');
name := CkJsonObject_IsNullOf(jsonResponse,'name');
company := CkJsonObject__stringOf(jsonResponse,'company');
street1 := CkJsonObject__stringOf(jsonResponse,'street1');
street2 := CkJsonObject_IsNullOf(jsonResponse,'street2');
city := CkJsonObject__stringOf(jsonResponse,'city');
state := CkJsonObject__stringOf(jsonResponse,'state');
zip := CkJsonObject__stringOf(jsonResponse,'zip');
country := CkJsonObject__stringOf(jsonResponse,'country');
phone := CkJsonObject__stringOf(jsonResponse,'phone');
email := CkJsonObject_IsNullOf(jsonResponse,'email');
mode := CkJsonObject__stringOf(jsonResponse,'mode');
carrier_facility := CkJsonObject_IsNullOf(jsonResponse,'carrier_facility');
residential := CkJsonObject_BoolOf(jsonResponse,'residential');
federal_tax_id := CkJsonObject_IsNullOf(jsonResponse,'federal_tax_id');
state_tax_id := CkJsonObject_IsNullOf(jsonResponse,'state_tax_id');
verificationsDeliverySuccess := CkJsonObject_BoolOf(jsonResponse,'verifications.delivery.success');
i := 0;
count_i := CkJsonObject_SizeOfArray(jsonResponse,'verifications.delivery.errors');
while i < count_i do
  begin
CkJsonObject_putI(jsonResponse,i);
    suggestion := CkJsonObject_IsNullOf(jsonResponse,'verifications.delivery.errors[i].suggestion');
    code := CkJsonObject__stringOf(jsonResponse,'verifications.delivery.errors[i].code');
    field := CkJsonObject__stringOf(jsonResponse,'verifications.delivery.errors[i].field');
    message := CkJsonObject__stringOf(jsonResponse,'verifications.delivery.errors[i].message');
    i := i + 1;
  end;

CkRest_Dispose(rest);
CkJsonObject_Dispose(jsonResponse);

Sample JSON Response Body

{
  "id": "adr_3618edae14874ff88d54ddfe94f21a41",
  "object": "Address",
  "created_at": "2017-05-08T19:43:41Z",
  "updated_at": "2017-05-08T19:43:41Z",
  "name": null,
  "company": "EasyPost",
  "street1": "UNDELIVERABLE ST",
  "street2": null,
  "city": "SAN FRANCISCO",
  "state": "CA",
  "zip": "94104",
  "country": "US",
  "phone": "4151234567",
  "email": null,
  "mode": "test",
  "carrier_facility": null,
  "residential": false,
  "federal_tax_id": null,
  "state_tax_id": null,
  "verifications": {
    "delivery": {
      "success": false,
      "errors": [
        {
          "suggestion": null,
          "code": "E.ADDRESS.NOT_FOUND",
          "field": "address",
          "message": "Address not found"
        },
        {
          "suggestion": null,
          "code": "E.HOUSE_NUMBER.MISSING",
          "field": "street1",
          "message": "House number is missing"
        }
      ],
      "details": {}
    }
  }
}