在实际需求中,常常需要查询IP对应的读取地区信息。目前,网络上的IP数据库以纯真版的最为流行,可以从网上下载到。
关于纯真IP数据库的格式可以参考这篇文章:《纯真IP数据库格式详解》在JSP或者Servlet中源码如下:
String ipstr = request.getHeader("x-forwarded-for");
if(ipstr ==null|| ipstr.length() ==0||"unknown".equalsIgnoreCase(ipstr)) {
ipstr = request.getHeader("Proxy-Client-IP");
}
if(ipstr ==null|| ipstr.length() ==0||"unknown".equalsIgnoreCase(ipstr)) {
ipstr = request.getHeader("WL-Proxy-Client-IP");
}
if(ipstr ==null|| ipstr.length() ==0||"unknown".equalsIgnoreCase(ipstr)) {
ipstr = request.getRemoteAddr();
}
IPSeeker ip=newIPSeeker("QQWry.Dat","e:/ip");
IPLocation local = ip.getIPLocation(ipstr);
//获得地区
String address = local.getCountry();
//获得类型
String type = local.getArea();
IPSeeker 的构造函数的第一个参数是纯真IP数据库文件的名字,第二个参数是该文件所在的文件夹名(全路径).
IPSeeker ip=new IPSeeker("QQWry.Dat","e:/ip");
通过第三方免费开放API获取IP对应的地理信息可以参看此文:《新浪网易IP地区信息查询API接口调用方法》