话不多说!直奔主题

既然是根据IP,首先肯定是先要获取IP地址的,以下代码是获取IP地址,部署到服务器上去后会获取到公网的IP不是服务器的本机IP;是通过HttpServletRequest获取

注:如请求通过nginx转发了 是获取不到真实请求的ip地址 需要在nginx的配置文件中添加以下配置

proxy_set_header Host $host:$server_port;
proxy_set_header    X-Real-IP        $remote_addr;
proxy_set_header    X-Forwarded-For  $proxy_add_x_forwarded_for;
 /*** 获取IP地址*/public static String getIpAddress(HttpServletRequest request) {String ip = request.getHeader("x-forwarded-for");if (ip != null && ip.length() != 0 && !"unknown".equalsIgnoreCase(ip) && ip.contains(",")) {ip = ip.split(",")[0];}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.getHeader("HTTP_CLIENT_IP");}if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("HTTP_X_FORWARDED_FOR");}if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getHeader("X-Real-IP");}if (ip == null || ip.length() == 0 || "unknown".equalsIgnoreCase(ip)) {ip = request.getRemoteAddr();}if ("0:0:0:0:0:0:0:1".equals(ip)) {ip = "127.0.0.1";}return ip;}

IP获取完之后,去访问高德开放平台,去注册,使用IP定位服务个人版也是可以免费使用的;高德地图开放平台传送门

进入高德地图开放平台后,找到控制台,然后找到应用管理再新建应用,在你新建的应用里新建key



这样对接高德地图IP定位所需的Key创建好了
高德地图IP定位文档传送门
我用的是IP定位,不是IP定位2.0

以下就是通过IP获取城市的代码了,这是我写的方式,里面有些代码需要改动

     String ip = ControllerAdminUtil.getIpAddress(request); //或者上面getIpFromRequest()这个方法StringBuffer json = new StringBuffer();RegionRecordDB regionRecordDB = null;try {URL u = new URL("https://restapi.amap.com/v3/ip?key=你创建的key&ip=" + ip);URLConnection yc = u.openConnection();// 读取返回的数据BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream(), "UTF-8"));String inputline = null;while ((inputline = in.readLine()) != null) {json.append(inputline);}in.close();} catch (Exception e) {e.printStackTrace();}String jsonStr = json.toString();//读取返回来的json字符串,转换成对象AddressByIpDB addressByIpDB = JSONObject.parseObject(jsonStr, AddressByIpDB.class);if (null != addressByIpDB) {if ("1".equals(addressByIpDB.getStatus())) {if (StringUtils.isNotBlank(addressByIpDB.getCity())) {return addressByIpDB;}}}//这里是做没有查寻到或者出错情况下的处理addressByIpDB  = new RegionRecordDB();addressByIpDB.setCityId(110000);addressByIpDB.setCityName("北京市");return addressByIpDB;

好了以上就是我使用高德地图通过IP地址获取城市的方式了!

java使用高德地图根据IP地址获取城市相关推荐

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

    java根据ip地址获取城市地域信息 这里提供两个公开的接口,一个是阿里的,一个是新浪的 http://ip.taobao.com/service/getIpInfo.php?ip=123.139.9 ...

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

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

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

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

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

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

  5. 使用高德地图的逆向地址,获取坐标点

    // 链接高德地图api,逆向获取公司地址的地理坐标点 使用axios获取 let AutonaviApi ="http://restapi.amap.com/v3/geocode/geok ...

  6. vue 高德地图API根据地址获取经纬度/根据经纬度获取地址

     1.引入 <script type="text/javascript" src="https://webapi.amap.com/maps?v=1.4.14&am ...

  7. 利用高德地图根据详细地址获取经纬度(工具类)

    废话不多说,直接上代码: package org.changneng.framework.frameworkweb.utils;import java.io.BufferedReader; impor ...

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

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

  9. android通过ip查询地址吗,Android 根据IP地址获取城市

    manifest中要加的permission和activity_main.xml 参照上. MainActivity.java package com.example.test; import jav ...

最新文章

  1. 获取树莓派4ip地址(手机热点获取)
  2. VS2005 常用快捷键
  3. Hive与Hbase结合使用
  4. c语言实现两个有序链表的合并(代码示例)
  5. QQ动态头像和动态主页
  6. 为什么说阿里巴巴已进化成为一家世界级的科技公司?
  7. GCC Command Options
  8. JVM调优之:垃圾收集器
  9. Android----- MD5加密(登录注册得到与IOS相同的加密值,并且解决两个平台汉字加密不相同问题)...
  10. 用HTML5做一个个人网站,此文仅展示个人主页界面。内附源代码下载地址
  11. openstack-packstack一键式在线部署
  12. 报错:for..in loops iterate over the entire prototype chain, which is virtually never what you want.
  13. 中轴型SpA的两种诊断分支具有可比性
  14. 【JavaScript】重温第一次
  15. Python:奇数之和
  16. Visio 安装激活方法
  17. Python加密有敏感信息的Word/Excel等文件
  18. 关于mac的wintogo制作(不需要win电脑不需要鼠标)
  19. DT时代下数据安全运营面临的主要挑战
  20. 天若OCR文字识别 v1.2.0

热门文章

  1. 量产元年,激光雷达决胜“千纳米”之外
  2. 从入门到熟悉,Android开发应该如何高效学习?
  3. C# 通过ADSL拨号更换IP
  4. 罗永浩到底有没有恰烂钱?
  5. 开源免费OA:O2OA中的日程安排功能是什么样的?
  6. python画xy轴_Python+pyqtgraph数据可视化:自定义坐标轴信息
  7. 唐诗宋词学习·126~130节
  8. ico的尺寸_批量压缩、加水印、调整尺寸……用这 6 款 Mac 图片工具一键解决
  9. 220V左右的得交流电有效值测量
  10. AndroidStudio输入汉字变成繁体的解决办法