zoukankan      html  css  js  c++  java
  • 根据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();
            }
        }
    }
  • 相关阅读:
    Android 自定义View (二) 进阶
    设计模式 装饰者模式 带你重回传奇世界
    Android 自定义View (一)
    C++ 习题 输出日期时间--友元类
    设计模式 观察者模式 以微信公众服务为例
    Binomial Coeffcients 历届山东省省赛题
    做一只美腻的程序媛
    java编程中容易犯2的细节汇总
    Arrays.asList()
    SQL Server用表组织数据
  • 原文地址:https://www.cnblogs.com/wanhua-wu/p/9327334.html
Copyright © 2011-2022 走看看