根据ip获取国家

 


        
            com.maxmind.geoip
            geoip-api
            1.3.0
        

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();
        }
    }
}

 

转载于:https://www.cnblogs.com/wanhua-wu/p/9327334.html

你可能感兴趣的:(根据ip获取国家)