Sample code for 30+ languages & platforms
PureBasic

ip-api.com IPv4 Geolocation Lookup

See more Geolocation Examples

Demonstrates how to lookup Geolocation data for an IPv4 address using the ip-api.com API.

Chilkat PureBasic Downloads

PureBasic
IncludeFile "CkJsonObject.pb"
IncludeFile "CkHttp.pb"

Procedure ChilkatExample()

    success.i = 0

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

    http.i = CkHttp::ckCreate()
    If http.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    ; Lookup an IPv4 address: 149.250.207.170  (this was a randomly chosen address)
    jsonStr.s = CkHttp::ckQuickGetStr(http,"http://ip-api.com/json/149.250.207.170")
    If CkHttp::ckLastMethodSuccess(http) = 0
        Debug CkHttp::ckLastErrorText(http)
        CkHttp::ckDispose(http)
        ProcedureReturn
    EndIf

    json.i = CkJsonObject::ckCreate()
    If json.i = 0
        Debug "Failed to create object."
        ProcedureReturn
    EndIf

    CkJsonObject::setCkEmitCompact(json, 0)
    success = CkJsonObject::ckLoad(json,jsonStr)

    Debug CkJsonObject::ckEmit(json)

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

    ; {
    ;   "as": "AS15854 Hewlett Packard GmbH",
    ;   "city": "B�blingen",
    ;   "country": "Germany",
    ;   "countryCode": "DE",
    ;   "isp": "Triaton Frankfurt",
    ;   "lat": 48.6779,
    ;   "lon": 8.97297,
    ;   "org": "EntServ Deutschland GmbH",
    ;   "query": "149.250.207.170",
    ;   "region": "BW",
    ;   "regionName": "Baden-W�rttemberg",
    ;   "status": "success",
    ;   "timezone": "Europe/Berlin",
    ;   "zip": "71034"
    ; }

    as.s
    city.s
    country.s
    countryCode.s
    isp.s
    lat.s
    lon.s
    org.s
    query.s
    region.s
    regionName.s
    status.s
    timezone.s
    zip.s

    as = CkJsonObject::ckStringOf(json,"as")
    city = CkJsonObject::ckStringOf(json,"city")
    country = CkJsonObject::ckStringOf(json,"country")
    countryCode = CkJsonObject::ckStringOf(json,"countryCode")
    isp = CkJsonObject::ckStringOf(json,"isp")
    lat = CkJsonObject::ckStringOf(json,"lat")
    lon = CkJsonObject::ckStringOf(json,"lon")
    org = CkJsonObject::ckStringOf(json,"org")
    query = CkJsonObject::ckStringOf(json,"query")
    region = CkJsonObject::ckStringOf(json,"region")
    regionName = CkJsonObject::ckStringOf(json,"regionName")
    status = CkJsonObject::ckStringOf(json,"status")
    timezone = CkJsonObject::ckStringOf(json,"timezone")
    zip = CkJsonObject::ckStringOf(json,"zip")


    CkHttp::ckDispose(http)
    CkJsonObject::ckDispose(json)


    ProcedureReturn
EndProcedure