Pascal (Lazarus/Delphi)
Pascal (Lazarus/Delphi)
MaxMind IPv4 Geolocation Lookup
See more Geolocation Examples
Demonstrates how to lookup Geolocation data for an IPv4 address using the MaxMind GeoIP2 Precision Web Service.Chilkat Pascal (Lazarus/Delphi) Downloads
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;
continentCode: string;
continentGeoname_id: Integer;
continentNamesJa: string;
continentNamesPt_BR: string;
continentNamesRu: string;
continentNamesZh_CN: string;
continentNamesDe: string;
continentNamesEn: string;
continentNamesEs: string;
continentNamesFr: string;
countryIs_in_european_union: Boolean;
countryIso_code: string;
countryGeoname_id: Integer;
countryNamesFr: string;
countryNamesJa: string;
countryNamesPt_BR: string;
countryNamesRu: string;
countryNamesZh_CN: string;
countryNamesDe: string;
countryNamesEn: string;
countryNamesEs: string;
maxmindQueries_remaining: Integer;
registered_countryIs_in_european_union: Boolean;
registered_countryIso_code: string;
registered_countryGeoname_id: Integer;
registered_countryNamesEs: string;
registered_countryNamesFr: string;
registered_countryNamesJa: string;
registered_countryNamesPt_BR: string;
registered_countryNamesRu: string;
registered_countryNamesZh_CN: string;
registered_countryNamesDe: string;
registered_countryNamesEn: string;
traitsIp_address: 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;
http.Login := 'MAXMIND_ACCOUNT_ID';
http.Password := 'MAXMIND_LICENSE_KEY';
http.Accept := 'application/json';
// Lookup an IPv4 address: 149.250.207.170 (this was a randomly chosen address)
jsonStr := http.QuickGetStr('https://geoip.maxmind.com/geoip/v2.1/country/149.250.207.170');
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
// {
// "continent": {
// "code": "EU",
// "geoname_id": 6255148,
// "names": {
// "ja": "?????",
// "pt-BR": "Europa",
// "ru": "??????",
// "zh-CN": "??",
// "de": "Europa",
// "en": "Europe",
// "es": "Europa",
// "fr": "Europe"
// }
// },
// "country": {
// "is_in_european_union": true,
// "iso_code": "DE",
// "geoname_id": 2921044,
// "names": {
// "fr": "Allemagne",
// "ja": "????????",
// "pt-BR": "Alemanha",
// "ru": "????????",
// "zh-CN": "??",
// "de": "Deutschland",
// "en": "Germany",
// "es": "Alemania"
// }
// },
// "maxmind": {
// "queries_remaining": 49999
// },
// "registered_country": {
// "is_in_european_union": true,
// "iso_code": "DE",
// "geoname_id": 2921044,
// "names": {
// "es": "Alemania",
// "fr": "Allemagne",
// "ja": "????????",
// "pt-BR": "Alemanha",
// "ru": "????????",
// "zh-CN": "??",
// "de": "Deutschland",
// "en": "Germany"
// }
// },
// "traits": {
// "ip_address": "149.250.207.170"
// }
// }
//
//
continentCode := json.StringOf('continent.code');
continentGeoname_id := json.IntOf('continent.geoname_id');
continentNamesJa := json.StringOf('continent.names.ja');
continentNamesPt_BR := json.StringOf('continent.names.pt-BR');
continentNamesRu := json.StringOf('continent.names.ru');
continentNamesZh_CN := json.StringOf('continent.names.zh-CN');
continentNamesDe := json.StringOf('continent.names.de');
continentNamesEn := json.StringOf('continent.names.en');
continentNamesEs := json.StringOf('continent.names.es');
continentNamesFr := json.StringOf('continent.names.fr');
countryIs_in_european_union := json.BoolOf('country.is_in_european_union');
countryIso_code := json.StringOf('country.iso_code');
countryGeoname_id := json.IntOf('country.geoname_id');
countryNamesFr := json.StringOf('country.names.fr');
countryNamesJa := json.StringOf('country.names.ja');
countryNamesPt_BR := json.StringOf('country.names.pt-BR');
countryNamesRu := json.StringOf('country.names.ru');
countryNamesZh_CN := json.StringOf('country.names.zh-CN');
countryNamesDe := json.StringOf('country.names.de');
countryNamesEn := json.StringOf('country.names.en');
countryNamesEs := json.StringOf('country.names.es');
maxmindQueries_remaining := json.IntOf('maxmind.queries_remaining');
registered_countryIs_in_european_union := json.BoolOf('registered_country.is_in_european_union');
registered_countryIso_code := json.StringOf('registered_country.iso_code');
registered_countryGeoname_id := json.IntOf('registered_country.geoname_id');
registered_countryNamesEs := json.StringOf('registered_country.names.es');
registered_countryNamesFr := json.StringOf('registered_country.names.fr');
registered_countryNamesJa := json.StringOf('registered_country.names.ja');
registered_countryNamesPt_BR := json.StringOf('registered_country.names.pt-BR');
registered_countryNamesRu := json.StringOf('registered_country.names.ru');
registered_countryNamesZh_CN := json.StringOf('registered_country.names.zh-CN');
registered_countryNamesDe := json.StringOf('registered_country.names.de');
registered_countryNamesEn := json.StringOf('registered_country.names.en');
traitsIp_address := json.StringOf('traits.ip_address');
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.