Получить геолокацию входящего запроса при загрузке Spring
Я хочу знать местоположение пользователя, который находится в нашем веб-приложении. Информация должна содержатьCountry
иCity
. Я не могу найти хороший способ сделать это, используяJava
илиSpring Boot
. я пытался использоватьGeoLite2-City
но это дает мне исключение, говоря, чтоThe address 10.212.134.200 is not in the database.
Я также получал это исключение на моемlocalhost
с ip127.0.0.1
. Ниже приведен код, который я использовал:
// String ipAddress = httpServletRequest.getRemoteAddr();
public String getGeoLocation(String ipAddress) {
String geoLocation = "";
try {
File database = ResourceUtils.getFile("classpath:GeoLite2-City/GeoLite2-City.mmdb");;
DatabaseReader dbReader = new DatabaseReader.Builder(database).build();
CityResponse response = dbReader.city(InetAddress.getByName(ipAddress));
String countryName = response.getCountry().getName();
String cityName = response.getCity().getName();
String postal = response.getPostal().getCode();
String state = response.getLeastSpecificSubdivision().getName();
geoLocation = "Country: " + countryName + "cityName: " + cityName + "postal: " + postal + "state: " + state;
System.out.println(geoLocation);
} catch(Exception ex) {
logger.error("Exception occured while trying to get GeoLocation of user: " + ex);
}
return geoLocation;
}
Но я всегда получаю исключение.
Я только скачал и добавилGeolite2-city
файл. Я также не подтвержден, если мне нужно добавить какой-либо другой файл. Зависимость, которую я добавил:
<dependency>
<groupId>com.maxmind.geoip2</groupId>
<artifactId>geoip2</artifactId>
<version>2.8.0</version>
</dependency>