项目中需要根据IP查询所在的城市,可以根据高德地图API接口查询IP对应的城市信息,但是高德地图是有请求配额的,超过数量是需要付费的。
以下操作基于https://www.ipip.net/提供的库文件
ipipfree.ipdb库文件需要官网下载:https://www.ipip.net/
需要导入JAR文件,maven配置项
<!-- ip地址库查询 -->
<dependency>
<groupId>net.ipip</groupId>
<artifactId>ipdb</artifactId>
<version>1.1.3</version>
</dependency>
代码
package com.durian.common.tool.ip;
import java.util.Arrays;
import net.ipip.ipdb.City;
/**
* 从城市查询
*
* @author leng
*
*/
public class CityUtil {
private static City city_DB;
/**
* 通过IP查询城市
*
* @param ip (IPv4或者 IPv6)
* @param language
* @return 例如[中国,广东,广州]
*/
public static String[] find(String ip, String language) {
try {
if (null == city_DB) {
city_DB = new City(new CityUtil().getClass().getResource("/").getPath() + "ipipfree.ipdb");
}
return city_DB.find(ip, language);
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
public static void main(String[] args) {
System.out.println(Arrays.toString(CityUtil.find("58.62.28.25", "CN")));
}
}
我这里的ipipfree.ipdb放在了配置文件同路径。
测试结果
IPDB提醒
如测试遇到报错,请将使用最新的fastjson。
ipdb库文件分享(由于某SDN强制要求下载积分,这里使用百度网盘分享)
链接: https://pan.baidu.com/s/1F_OOxK9TSA466h2YcQKfkw 提取码: 6s3h