Sample code for 30+ languages & platforms
Tcl

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 Tcl Downloads

Tcl

load ./chilkat.dll

set success 0

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

set http [new_CkHttp]

# Note: This is not a real API key.  Replace with your own...
CkHttp_SetUrlVar $http "api_key" "2C312FBC9E667E5A0211F5152E5A1333"
CkHttp_SetUrlVar $http "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..
set jsonStr [CkHttp_quickGetStr $http "https://api.ip2location.io/?key={$api_key}&ip={$ip_address}&format=json"]
if {[CkHttp_get_LastMethodSuccess $http] == 0} then {
    puts [CkHttp_lastErrorText $http]
    delete_CkHttp $http
    exit
}

set json [new_CkJsonObject]

CkJsonObject_put_EmitCompact $json 0
set success [CkJsonObject_Load $json $jsonStr]

puts [CkJsonObject_emit $json]

# 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
# }

set ip [CkJsonObject_stringOf $json "ip"]
set country_code [CkJsonObject_stringOf $json "country_code"]
set country_name [CkJsonObject_stringOf $json "country_name"]
set region_name [CkJsonObject_stringOf $json "region_name"]
set city_name [CkJsonObject_stringOf $json "city_name"]
set latitude [CkJsonObject_stringOf $json "latitude"]
set longitude [CkJsonObject_stringOf $json "longitude"]
set zip_code [CkJsonObject_stringOf $json "zip_code"]
set time_zone [CkJsonObject_stringOf $json "time_zone"]
set asn [CkJsonObject_stringOf $json "asn"]
set v_as [CkJsonObject_stringOf $json "as"]
set is_proxy [CkJsonObject_BoolOf $json "is_proxy"]

delete_CkHttp $http
delete_CkJsonObject $json