java根据ip地址获取城市地域信息

这里提供两个公开的接口,一个是阿里的,一个是新浪的
http://ip.taobao.com/service/getIpInfo.php?ip=123.139.94.139

http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=218.192.3.42

接下来上代码,我这里用的是springboot自带的RestTemplate,各位如果没用到可以用HttpURLConnection。案例是在拦截器里获取ip,并查询地址。如果内网测试的话,获取到的是内网ip,通过内网穿透出去访问,可以获取你的公网出口ip,或者吧ip直接写死。

@SpringBootApplication
public class LgmallRestApplication {@Autowiredprivate RestTemplateBuilder builder;@Beanpublic RestTemplate restTemplate() {return builder.build();}public static void main(String[] args) {SpringApplication.run(LgmallRestApplication.class, args);}
}
/*** @Author: nelson* @Description: 商品浏览记录拦截器* @Date: created in 2018/03/31/16:49*/
public class BrowseItemInterceptor implements HandlerInterceptor {@Autowiredprivate RestTemplate restTemplate;@Overridepublic boolean preHandle(HttpServletRequest request, HttpServletResponse response, Object handler) throws Exception {String ip = request.getHeader("x-forwarded-for");if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("Proxy-Client-IP");}if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("WL-Proxy-Client-IP");}if(ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getRemoteAddr();}if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip)) {// 多次反向代理后会有多个ip值,第一个ip才是真实ipif( ip.indexOf(",")!=-1 ){ip = ip.split(",")[0];}}//新浪查询失败查询阿里String sina = restTemplate.getForObject("http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip={ip}", String.class,ip);SinaIpVo sinaIpVo = new Gson().fromJson(sina, SinaIpVo.class);if(sinaIpVo.getRet()!=-1){System.out.println(sinaIpVo.getProvince());System.out.println(sinaIpVo.getCity());}else{String object = restTemplate.getForObject("http://ip.taobao.com/service/getIpInfo.php?ip={ip}", String.class,ip);IpVo ipVo = new Gson().fromJson(object, IpVo.class);// XX表示内网 if(ipVo.getCode()==0 && !ipVo.getAddress().getRegion().equals("XX")){System.out.println(ipVo.getAddress().getRegion());System.out.println(ipVo.getAddress().getCity());}}return true;}@Overridepublic void postHandle(HttpServletRequest request, HttpServletResponse response, Object handler, ModelAndView modelAndView) throws Exception {}@Overridepublic void afterCompletion(HttpServletRequest request, HttpServletResponse response, Object handler, Exception ex) throws Exception {}
}

阿里返回结果封装的vo,省去get、set方法,需要其他的属性根据返回json自己扩展。

/*** @Author: nelson* @Description: get city by ip* @Date: created in 2018/03/31/17:40*/
public class IpVo implements Serializable{private Integer code;private Address address;public class Address implements Serializable{private String ip;private String region;private String city;}
}

新浪返回结果封装的vo,省去get、set方法,需要其他的属性根据返回json自己扩展。

/*** @Author: nelson* @Description: get city by ip* @Date: created in 2018/03/31/17:40*/
public class SinaIpVo implements Serializable{private Integer ret;private String province;private String city;
}

关注

如果有问题,请在下方评论,或者加群讨论 200909980

关注下方微信公众号,可以及时获取到各种技术的干货哦,如果你有想推荐的帖子,也可以联系我们的。

java根据ip地址获取城市地域信息相关推荐

  1. 【转载】 java根据ip地址获取详细地域信息

    互联网有很多接口可以实现通过ip查询到具体的位置,如下: 通过淘宝IP地址库获取IP位置 1. 请求接口(GET):http://ip.taobao.com/service/getIpInfo.php ...

  2. Java 根据IP地址获取城市(ip2region)

    根据IP地址获取城市(ip2region) Ip2region是什么? Ip2region特性 99.9%准确率 标准化的数据格式 体积小 查询速度快 多查询客户端的支持 maven集成 小坑 Ip2 ...

  3. java 根据ip地址获取城市_Java 根据ip地址获取当前城市

    maxmind免费数据库maven位置:用来获取所要用的数据库文件(GeoLite2-City.mmdb) org.elasticsearch geolite2-databases 20151029 ...

  4. java使用高德地图根据IP地址获取城市

    话不多说!直奔主题 既然是根据IP,首先肯定是先要获取IP地址的,以下代码是获取IP地址,部署到服务器上去后会获取到公网的IP不是服务器的本机IP:是通过HttpServletRequest获取 注: ...

  5. 前端获取自己所在的ip_前端使用js根据ip地址获取城市地理位置

    标签: 前端使用js根据ip地址获取城市地理位置 一.使用js根据ip获取地址位置 1.在html页面,加入如下代码: var cityCode=returnCitySN.cid; document. ...

  6. java 根据IP地址获取地理位置

    来源:http://www.ipplus360.com/tech/api/ 来源:http://blog.csdn.net/Cryhelyxx/article/details/40862101 精确查 ...

  7. 根据ip地址获取城市名的几种方法

    2019独角兽企业重金招聘Python工程师标准>>> 在某些场景下,可能需要用到根据ip地址获取ip所对应的城市名. 貌似腾讯.百度等开放接口已经失效或者免费服务接口关闭等原因,很 ...

  8. java通过ip地址获取相应对应的城市

    发现了一比较好的本地ip对应地址的库资源文件--做一下笔记. 官方网站 https://dev.maxmind.com/geoip/geoip2/geolite2/ 这里提供了免费的库文件,还有很好的 ...

  9. JAVA根据IP地址获取省份城市和经纬度(可获取国家名称 淘宝高德API如果是国外IP获取到的为空)

    所需jar包maven地址: <!-- 根据ip获取位置 --><dependency><groupId>com.maxmind.geoip2</groupI ...

最新文章

  1. golang 判断目录是否为空
  2. excel执行INSERT和UPDATE操作语句
  3. EMC与地之重新认识地
  4. 2.1.1进程的概念 组成和特征
  5. python空格_python 空格
  6. 项目war包部署到第三方Tomcat,访问路径必须加上项目名称的坑
  7. pytorch对张量的一些常用处理以及numpy对数组的一些常用处理
  8. 游戏缺少index.html,index.html
  9. mybatis使用时遇到的一些问题------模糊查询、处理大于号小于号、相关函数替换空值...
  10. 1-7docke的网络模式
  11. JAVA入门级教学之(三元运算符)
  12. java保存文件到linux指定目录_怎么使用java编程实现linux下全部文件目录的遍历
  13. Java日历compareTo()方法与示例
  14. 第八章 数据结构与算法
  15. .Net Core下使用MQTT协议直连IoT平台
  16. 【NLP】45个小众而实用的NLP开源字典和工具
  17. armv6, armv7, armv7s, arm64 的区别
  18. 网页链接在线提取工具-免费网页链接在线提取软件
  19. 视频剪辑-mkv文件导入PR
  20. 2021-07-19普中科技STM-32F1开发板初学

热门文章

  1. nginx配置ngx_http_sub_module
  2. 2O19 江大计算机有调剂,江南大学2019年考研调剂公告
  3. c语言程序设计分值,计算机考试题分值分布
  4. 关于MAC时间无法自动更新,时间错误的问题解决方法
  5. 冒泡排序算法(Bubble Sort)
  6. android Java 笔试考题
  7. Linux系统网络服务——安全与防火墙笔记
  8. 关于任天堂,你不了解的9件事
  9. 整数运算(加减法)详解
  10. Linux就该这么19期高清录播-入门实战-企业常见服务搭建