Java - trouver un emplacement à l'aide de l'adresse IP
Dans cet exemple, nous vous montrons comment trouver un emplacement (pays, ville, latitude, longitude) à l'aide d'une adresse IP.
1. Base de données GeoLite
LeMaxMind fournit une base de données GeoLite gratuite (IP Address to Location).
2. Exemple Java GeoLite
Un exemple d'utilisation des API Java du client GeoIP pour trouver un emplacement à l'aide d'une adresse IP.
GetLocationExample.java
package com.example.analysis.location; import java.io.File; import java.io.IOException; import com.maxmind.geoip.Location; import com.maxmind.geoip.LookupService; import com.maxmind.geoip.regionName; import com.example.analysis.location.mode.ServerLocation; public class GetLocationExample { public static void main(String[] args) { GetLocationExample obj = new GetLocationExample(); ServerLocation location = obj.getLocation("206.190.36.45"); System.out.println(location); } public ServerLocation getLocation(String ipAddress) { File file = new File( "C:\\resources\\location\\GeoLiteCity.dat"); return getLocation(ipAddress, file); } public ServerLocation getLocation(String ipAddress, File file) { ServerLocation serverLocation = null; try { serverLocation = new ServerLocation(); LookupService lookup = new LookupService(file,LookupService.GEOIP_MEMORY_CACHE); Location locationServices = lookup.getLocation(ipAddress); serverLocation.setCountryCode(locationServices.countryCode); serverLocation.setCountryName(locationServices.countryName); serverLocation.setRegion(locationServices.region); serverLocation.setRegionName(regionName.regionNameByCode( locationServices.countryCode, locationServices.region)); serverLocation.setCity(locationServices.city); serverLocation.setPostalCode(locationServices.postalCode); serverLocation.setLatitude(String.valueOf(locationServices.latitude)); serverLocation.setLongitude(String.valueOf(locationServices.longitude)); } catch (IOException e) { System.err.println(e.getMessage()); } return serverLocation; } }
Sortie
ServerLocation [countryCode=US, countryName=United States, region=CA, regionName=California, city=Sunnyvale, postalCode=94089, latitude=37.424896, longitude=-122.0074]