码迷,mamicode.com
首页 > 其他好文 > 详细

通过网址或IP获取省份城市

时间:2017-12-10 13:15:56      阅读:598      评论:0      收藏:0      [点我收藏+]

标签:reader   bind   int   geo   sha   inpu   依赖   print   ext   

 

下载数据文件

https://dev.maxmind.com/geoip/geoip2/downloadable/#MaxMind_APIs

  

添加maven依赖

        <dependency>
            <groupId>com.maxmind.geoip2</groupId>
            <artifactId>geoip2</artifactId>
            <version>2.10.0</version>
        </dependency>

  

 

java代码具体实现:

import com.fasterxml.jackson.databind.JsonNode;
import com.maxmind.db.Reader;
import com.maxmind.geoip2.DatabaseReader;
import com.maxmind.geoip2.exception.GeoIp2Exception;
import com.maxmind.geoip2.model.AnonymousIpResponse;
import com.maxmind.geoip2.model.CityResponse;
import com.maxmind.geoip2.record.City;
import com.maxmind.geoip2.record.Country;
import com.maxmind.geoip2.record.Location;
import com.maxmind.geoip2.record.Subdivision;
import org.junit.Test;

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

/**
 * Created by yiliang9117
 * 2017-12-10 09:40
 */
public class CTest {

    @Test
    public void cityTest() throws IOException, GeoIp2Exception {
        InputStream in = ClassLoader.getSystemResourceAsStream("GeoLite2-City.mmdb");//数据文件地址
        Reader r = new Reader(in);
        JsonNode node = r.get(InetAddress.getByName("tianya.cn"));
        //国家
        String country = node.get("country").get("names").get("zh-CN").textValue();
        System.out.println(country);
        //省份
        String area = node.get("subdivisions").get(0).get("names").get("zh-CN").textValue();
        //城市
        String city = node.get("city").get("names").get("zh-CN").textValue();
        System.out.println(country + "." + area + "." + city);
    }

}

  

通过网址或IP获取省份城市

标签:reader   bind   int   geo   sha   inpu   依赖   print   ext   

原文地址:http://www.cnblogs.com/yiliang9117/p/8016352.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!