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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了通过网址或IP获取省份城市相关的知识,希望对你有一定的参考价值。

 

下载数据文件

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获取省份城市的主要内容,如果未能解决你的问题,请参考以下文章

通过微博API怎么获取用户发微博的实际地点

省市二级联动

ip转城市接口,ip转省份接口,ip转城市PHP方法

iOS开发:通过经纬度获得城市省份等信息

PHP 根据IP获取地区查询数据库内容

echarts地图中城市与省份之间的切换