IP地址归属地查询
大约 2 分钟
SpIpRegionSearcher
是一个用于查询 IP 地址归属地的工具类,基于 org.lionsoul.ip2region.xdb.Searcher
实现。它能够解析 IP 地址并返回详细的归属地信息(如国家、省份、城市、网络运营商等)。
1. 安装与配置
Maven 依赖
<dependency>
<groupId>com.simperfect.commons</groupId>
<artifactId>simperfect-ip-region</artifactId>
</dependency>
2. API 介绍
2.1 方法列表
方法名 | 描述 | 返回值类型 |
---|---|---|
search(String ip) | 根据指定的 IP 地址查询归属地信息 | com.simperfect.commons.ip.region.IpRegion |
getClientIp() | 获取当前客户端的 IP 地址 | String |
searchByClientIp() | 根据当前客户端的 IP 地址查询归属地信息 | com.simperfect.commons.ip.region.IpRegion |
2.2 方法详细说明
2.2.1 search(String ip)
- 功能:根据指定的 IP 地址查询归属地信息。
- 参数:
ip
:需要查询的 IP 地址(如"127.0.0.1"
)。
- 返回值:
- 如果查询成功,返回
IpRegion
对象,包含国家、省份、城市和网络运营商信息。 - 如果查询失败或 IP 地址无效,返回
null
。
- 如果查询成功,返回
2.2.2 getClientIp()
- 功能:从
HttpServletRequest
中获取当前客户端的 IP 地址。 - 返回值:
- 客户端的 IP 地址字符串。
2.2.3 searchByClientIp()
- 功能:结合
getClientIp()
和search(String ip)
方法,直接查询当前客户端 IP 的归属地信息。 - 返回值:
- 如果查询成功,返回
IpRegion
对象。 - 如果查询失败或无法获取客户端 IP,返回
null
。
- 如果查询成功,返回
3. 使用示例
import com.simperfect.commons.ip.SpIpRegionSearcher;
import com.simperfect.commons.ip.region.IpRegion;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.autoconfigure.SpringBootApplication;
@SpringBootApplication
public class IpRegionDemoApplication {
@Autowired
private SpIpRegionSearcher searcher;
public void run() throws Exception {
// 查询指定 IP 的归属地
String ip = "127.0.0.1";
IpRegion ipRegion = searcher.search(ip);
if (ipRegion != null) {
System.out.println("国家: " + ipRegion.getCountry().getName());
System.out.println("省份: " + ipRegion.getProvince().getName());
System.out.println("城市: " + ipRegion.getCity().getName());
System.out.println("运营商: " + ipRegion.getOperator());
} else {
System.out.println("未查询到归属地信息");
}
// 查询当前客户端 IP 的归属地
IpRegion clientIpRegion = searcher.searchByClientIp();
if (clientIpRegion != null) {
System.out.println("客户端国家: " + clientIpRegion.getCountry().getName());
System.out.println("客户端省份: " + clientIpRegion.getProvince().getName());
System.out.println("客户端城市: " + clientIpRegion.getCity().getName());
System.out.println("客户端运营商: " + clientIpRegion.getOperator());
} else {
System.out.println("未查询到客户端归属地信息");
}
}
}