根据ip获取国家

 

<!-- https://mvnrepository.com/artifact/com.maxmind.geoip/geoip-api -->
        <dependency>
            <groupId>com.maxmind.geoip</groupId>
            <artifactId>geoip-api</artifactId>
            <version>1.3.0</version>
        </dependency>

Country_GeoIP.dat在博客文件管理列表中

 

package com.onloon.website.analytics.common.utils;

import java.io.IOException;
import java.net.InetAddress;

import com.maxmind.geoip.Location;
import org.apache.commons.lang3.StringUtils;
import org.springframework.core.io.ClassPathResource;

import com.maxmind.geoip.Country;
import com.maxmind.geoip.LookupService;
import com.onloon.website.analytics.common.exception.BusinessException;

public class GeoIpUtil {
    
    private static final String COUNTRY_DATA_PATH="/ipdb/Country_GeoIP.dat";
    private static final String CITY_DATA_PATH="/ipdb/GeoLiteCity.dat";

    private static  LookupService lookupService;
    private static  LookupService lookupCityService;

    /**
     * 查询指定ip的国家英文名称
     * 
     * @author pengfeng(彭锋)
     * @time 下午3:44:00  
     * @param ip
     * @return
     */
    public static String getCountryEnName(String ip) {
        if(lookupService==null) {
            load();
        }
        if(lookupService==null) {
            return null;
        }
        Country country=lookupService.getCountry(ip);
        if(country==null||StringUtils.isBlank(country.getName())) {
            return null;
        }
        return country.getName();
    }

    /**
     * 根据IP获取位置信息
     * @param ip
     * @return
     */
    public static Location getLocatinInfo(String ip){
        if(lookupCityService==null) {
            loadCity();
        }
        if(lookupCityService==null) {
            return null;
        }
        return lookupCityService.getLocation(ip);
    }
    
    //加载数据文件
    private static synchronized void  load() {
        if(lookupService!=null) {
            return;
        }
        ClassPathResource resource = new ClassPathResource(COUNTRY_DATA_PATH);
        try {
            lookupService=new LookupService(resource.getFile());
        } catch (IOException e) {
            throw new BusinessException();
        }
    }

    //加载数据文件
    private static synchronized void  loadCity() {
        if(lookupCityService!=null) {
            return;
        }
        ClassPathResource resource = new ClassPathResource(CITY_DATA_PATH);
        try {
            lookupCityService=new LookupService(resource.getFile());
        } catch (IOException e) {
            throw new BusinessException();
        }
    }
}

 

posted @ 2018-07-18 09:24  wanhua.wu  阅读(1805)  评论(0编辑  收藏  举报