参考:
通过Ip查询对应地址,Ip2location全球IP地址网段-CSDN博客
因为在线接口有限制(毕竟别人提供服务,服务器,数据维护,域名啥的都要费用), 所以本地化服务的需求。
对于 Java 开发者,可以使用 Maven 或 Gradle 添加 IP2Location 依赖项,并使用其 API 查询数据库。
- <dependency>
- <groupId>com.ip2locationgroupId>
- <artifactId>ip2location-javaartifactId>
- <version>最新版本version>
- dependency>
demo (测试这个性能,二进制文件,第一次慢点 5毫秒,也和你的数据库文件大小有关系)
- import com.ip2location.IP2Location;
-
- // 加载数据库
- IP2Location db = new IP2Location("path/to/your/IP2LOCATION-LITE-DB1.BIN");
-
- // 查询 IP 地址
- String ip = "8.8.8.8";
- try {
- IP2Location.Record rec = db.getRecordByIP(ip);
- System.out.println("Country: " + rec.countryLong);
- System.out.println("Region: " + rec.region);
- System.out.println("City: " + rec.city);
- } catch (Exception e) {
- e.printStackTrace();
- }
-
- // 关闭数据库
- db.close();
本地化服务,优点是调用无限制,缺点:数据库文件需要更新。