Is there a way to get the client's public ip address through the web application.
if it exists, can you give an example?
You can try something like this. There's other data that is returned along with the IP address.
procedure TForm1.WebButton1Click(Sender: TObject);
var
Internet: String;
begin
Internet := 'Unknown';
asm
var ipdata = await fetch('https://ipapi.co/json/').then(function(response) {return response.json()});
Internet = ipdata.ip
console.log(ipdata);
end;
showmessage(Internet);
end;
Here's what you might see in the console:
{
asn: "AS6317"
city: "Vancouver"
continent_code: "NA"
country: "CA"
country_area: 9984670
country_calling_code: "+1"
country_capital: "Ottawa"
country_code: "CA"
country_code_iso3: "CAN"
country_name: "Canada"
country_population: 37058856
country_tld: ".ca"
currency: "CAD"
currency_name: "Dollar"
in_eu: false
ip: "174.7.120.110"
languages: "en-CA,fr-CA,iu"
latitude: 49.2584
longitude: -123.1456
network: "174.7.112.0/20"
org: "SHAW"
postal: "V6J"
region: "British Columbia"
region_code: "BC"
timezone: "America/Vancouver"
utc_offset: "-0700"
version: "IPv4"
}
I think this is easier done on the server. I don't think there is a direct way you can do this in javascript, but I guess you could call IP Address API
Thanks, AndrewSimard, this worked, but I have to have this server with me.
So I will also consider Russell Weetch's suggestion
What do you mean by "I have to have this server with me"?
Thank you, I solved the server too!
Can you post a version of what you ended up using?
on the server side
My ```'https://ipapi.co/json/ '
TIdHTTPServer
AResponseInfo.ContentText := ARequestInfo.RemoteIP