本文主要是介绍使用GeoLite2库根据IP判断国家名称,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
- 访问 https://dev.maxmind.com/geoip/geoip2/geolite2/ ,注册账号
- 注册成功之后进行数据库文件的下载
- 如果只是要根据ip判断国家名称的话,选择Country包就可以了,如果需要精确到城市或者有更精确的要求的话,选择城市包或者使用付费服务
- 解压后的IP库文件
- 根据官方提供的sample,码代码
- https://support.maxmind.com/getting-started-with-geolite2/
- https://github.com/maxmind/GeoIP2-java
package com.csp.common.component;import java.io.InputStream;
import java.net.InetAddress;
import org.springframework.core.io.ClassPathResource;
import com.csp.common.utils.StringUtil;
import com.maxmind.geoip2.DatabaseReader;
import com.maxmind.geoip2.model.CountryResponse;
import com.maxmind.geoip2.record.Country;public class IpUtil {/*** IPアドレスで、国判別する* @param ipAddress IPアドレス* @return 国名*/public String getCountryNameByIp(String ipAddress) {String countryName = StringUtil.BLANK;try {File database = new File("/path/to/GeoLite2-Country.mmdb");DatabaseReader reader = new DatabaseReader.Builder(database ).build();InetAddress ip = InetAddress.getByName(ipAddress);CountryResponse response = reader.country(ip);Country country = response.getCountry();// 如果想要让国家的名称为中文的话, ja要改为 zh-CHcountryName = country.getNames().get("ja");} catch (Exception e) {countryName = StringUtil.BLANK;}return countryName;}
}
这篇关于使用GeoLite2库根据IP判断国家名称的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!