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

ip2location.io GeoLocation API

See more Geolocation Examples

Demonstrates how to lookup Geolocation data for an IPv4 address using the ip2location.io GeoLocation 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;
  country_code: string;
  country_name: string;
  region_name: string;
  city_name: string;
  latitude: string;
  longitude: string;
  zip_code: string;
  time_zone: string;
  asn: string;
  v_as: string;
  is_proxy: Boolean;

begin
  success := False;

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

  http := THttp.Create;

  //  Note: This is not a real API key.  Replace with your own...
  http.SetUrlVar('api_key','2C312FBC9E667E5A0211F5152E5A1333');
  http.SetUrlVar('ip_address','8.8.8.8');

  //  Note: When first creating an ip2location.io account, make sure to at least subscribe to the free access.
  //  Otherwise your API key will not yet work..
  jsonStr := http.QuickGetStr('https://api.ip2location.io/?key={$api_key}&ip={$ip_address}&format=json');
  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",
  //    "country_code": "US",
  //    "country_name": "United States of America",
  //    "region_name": "California",
  //    "city_name": "Mountain View",
  //    "latitude": 37.405992,
  //    "longitude": -122.078515,
  //    "zip_code": "94043",
  //    "time_zone": "-07:00",
  //    "asn": "15169",
  //    "as": "Google LLC",
  //    "is_proxy": false
  //  }

  ip := json.StringOf('ip');
  country_code := json.StringOf('country_code');
  country_name := json.StringOf('country_name');
  region_name := json.StringOf('region_name');
  city_name := json.StringOf('city_name');
  latitude := json.StringOf('latitude');
  longitude := json.StringOf('longitude');
  zip_code := json.StringOf('zip_code');
  time_zone := json.StringOf('time_zone');
  asn := json.StringOf('asn');
  v_as := json.StringOf('as');
  is_proxy := json.BoolOf('is_proxy');


  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.