Sample code for 30+ languages & platforms
Pascal (Lazarus/Delphi)

geo.ipify.org IPv4 Geolocation Lookup

See more Geolocation Examples

Demonstrates how to lookup Geolocation data for an IPv4 address using the geo.ipify.org REST API.

Chilkat Pascal (Lazarus/Delphi) Downloads

Pascal (Lazarus/Delphi)
program ChilkatDemo;

// Demonstrates using the Chilkat Pascal wrapper via the C bridge DLL.
// Builds as a console application under Lazarus (FPC) or Delphi.

{$IFDEF FPC}
  {$MODE DELPHI}
{$ENDIF}
{$APPTYPE CONSOLE}

uses
  {$IFDEF UNIX}
  cthreads,
  {$ENDIF}
  SysUtils,
  CkDllLoader,
  Chilkat.JsonObject,
  Chilkat.Http;

// ---------------------------------------------------------------------------

procedure RunDemo;
var
  success: Boolean;
  http: THttp;
  jsonStr: string;
  json: TJsonObject;
  ip: string;
  locationCountry: string;
  locationRegion: string;
  locationCity: string;
  locationLat: string;
  locationLng: string;
  locationPostalCode: string;
  locationTimezone: string;

begin
  success := False;

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

  http := THttp.Create;

  //  Lookup an IPv4 address: 8.8.8.8
  jsonStr := http.QuickGetStr('https://geo.ipify.org/api/v1?apiKey=API_KEY&ipAddress=8.8.8.8');
  if (http.LastMethodSuccess = False) then
    begin
      WriteLn(http.LastErrorText);
      Exit;
    end;

  json := TJsonObject.Create;
  json.EmitCompact := False;
  success := json.Load(jsonStr);

  WriteLn(json.Emit());

  //  Sample output:
  //  Use this online tool to generate parsing code from sample JSON: 
  //  Generate Parsing Code from JSON

  //  {
  //    "ip": "8.8.8.8",
  //    "location": {
  //      "country": "IT",
  //      "region": "Lombardy",
  //      "city": "Milan",
  //      "lat": 45.4707,
  //      "lng": 9.1889,
  //      "postalCode": "20147",
  //      "timezone": "+02:00"
  //    }
  //  }

  ip := json.StringOf('ip');
  locationCountry := json.StringOf('location.country');
  locationRegion := json.StringOf('location.region');
  locationCity := json.StringOf('location.city');
  locationLat := json.StringOf('location.lat');
  locationLng := json.StringOf('location.lng');
  locationPostalCode := json.StringOf('location.postalCode');
  locationTimezone := json.StringOf('location.timezone');


  http.Free;
  json.Free;

end;

// ---------------------------------------------------------------------------

begin

  try
    RunDemo;
  except
    on E: Exception do
      WriteLn('Unhandled exception: ', E.ClassName, ': ', E.Message);
  end;

  WriteLn;
  {$IFDEF MSWINDOWS}
  WriteLn('Press Enter to exit...');
  ReadLn;
  {$ENDIF}
end.