Sample code for 30+ languages & platforms
PowerBuilder

ipstack.com IPv4 Geolocation Lookup

See more Geolocation Examples

Demonstrates how to lookup Geolocation data for an IPv4 address using the ipstack.com REST API.

Chilkat PowerBuilder Downloads

PowerBuilder
integer li_rc
integer li_Success
oleobject loo_Http
string ls_JsonStr
oleobject loo_Json
string ls_Ip
string ls_V_type
string ls_Continent_code
string ls_Continent_name
string ls_Country_code
string ls_Country_name
string ls_Region_code
string ls_Region_name
string ls_City
string ls_Zip
string ls_Latitude
string ls_Longitude
string ls_LocationGeoname_id
string ls_LocationCapital
string ls_LocationCountry_flag
string ls_LocationCountry_flag_emoji
string ls_LocationCountry_flag_emoji_unicode
string ls_LocationCalling_code
integer li_LocationIs_eu
integer i
integer li_Count_i
string ls_Code
string ls_Name
string ls_Native

li_Success = 0

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

loo_Http = create oleobject
li_rc = loo_Http.ConnectToNewObject("Chilkat.Http")
if li_rc < 0 then
    destroy loo_Http
    MessageBox("Error","Connecting to COM object failed")
    return
end if

// Lookup an IPv4 address: 149.250.207.170  (this was a randomly chosen address)
ls_JsonStr = loo_Http.QuickGetStr("http://api.ipstack.com/149.250.207.170?access_key=YOUR_ACCESS_KEY")
if loo_Http.LastMethodSuccess = 0 then
    Write-Debug loo_Http.LastErrorText
    destroy loo_Http
    return
end if

loo_Json = create oleobject
li_rc = loo_Json.ConnectToNewObject("Chilkat.JsonObject")

loo_Json.EmitCompact = 0
li_Success = loo_Json.Load(ls_JsonStr)

Write-Debug loo_Json.Emit()

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

// {
//   "ip": "149.250.207.170",
//   "type": "ipv4",
//   "continent_code": "EU",
//   "continent_name": "Europe",
//   "country_code": "DE",
//   "country_name": "Germany",
//   "region_code": null,
//   "region_name": null,
//   "city": null,
//   "zip": null,
//   "latitude": 51.2993,
//   "longitude": 9.491,
//   "location": {
//     "geoname_id": null,
//     "capital": "Berlin",
//     "languages": [
//       {
//         "code": "de",
//         "name": "German",
//         "native": "Deutsch"
//       }
//     ],
//     "country_flag": "http:\/\/assets.ipstack.com\/flags\/de.svg",
//     "country_flag_emoji": "\ud83c\udde9\ud83c\uddea",
//     "country_flag_emoji_unicode": "U+1F1E9 U+1F1EA",
//     "calling_code": "49",
//     "is_eu": true
//   }
// }

ls_Ip = loo_Json.StringOf("ip")
ls_V_type = loo_Json.StringOf("type")
ls_Continent_code = loo_Json.StringOf("continent_code")
ls_Continent_name = loo_Json.StringOf("continent_name")
ls_Country_code = loo_Json.StringOf("country_code")
ls_Country_name = loo_Json.StringOf("country_name")
ls_Region_code = loo_Json.StringOf("region_code")
ls_Region_name = loo_Json.StringOf("region_name")
ls_City = loo_Json.StringOf("city")
ls_Zip = loo_Json.StringOf("zip")
ls_Latitude = loo_Json.StringOf("latitude")
ls_Longitude = loo_Json.StringOf("longitude")
ls_LocationGeoname_id = loo_Json.StringOf("location.geoname_id")
ls_LocationCapital = loo_Json.StringOf("location.capital")
ls_LocationCountry_flag = loo_Json.StringOf("location.country_flag")
ls_LocationCountry_flag_emoji = loo_Json.StringOf("location.country_flag_emoji")
ls_LocationCountry_flag_emoji_unicode = loo_Json.StringOf("location.country_flag_emoji_unicode")
ls_LocationCalling_code = loo_Json.StringOf("location.calling_code")
li_LocationIs_eu = loo_Json.BoolOf("location.is_eu")
i = 0
li_Count_i = loo_Json.SizeOfArray("location.languages")
do while i < li_Count_i
    loo_Json.I = i
    ls_Code = loo_Json.StringOf("location.languages[i].code")
    ls_Name = loo_Json.StringOf("location.languages[i].name")
    ls_Native = loo_Json.StringOf("location.languages[i].native")
    i = i + 1
loop


destroy loo_Http
destroy loo_Json