java使用高德地图根据IP地址获取城市
话不多说!直奔主题
既然是根据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地址获取城市相关推荐
- java根据ip地址获取城市地域信息
java根据ip地址获取城市地域信息 这里提供两个公开的接口,一个是阿里的,一个是新浪的 http://ip.taobao.com/service/getIpInfo.php?ip=123.139.9 ...
- Java 根据IP地址获取城市(ip2region)
根据IP地址获取城市(ip2region) Ip2region是什么? Ip2region特性 99.9%准确率 标准化的数据格式 体积小 查询速度快 多查询客户端的支持 maven集成 小坑 Ip2 ...
- 前端获取自己所在的ip_前端使用js根据ip地址获取城市地理位置
标签: 前端使用js根据ip地址获取城市地理位置 一.使用js根据ip获取地址位置 1.在html页面,加入如下代码: var cityCode=returnCitySN.cid; document. ...
- 根据ip地址获取城市名的几种方法
2019独角兽企业重金招聘Python工程师标准>>> 在某些场景下,可能需要用到根据ip地址获取ip所对应的城市名. 貌似腾讯.百度等开放接口已经失效或者免费服务接口关闭等原因,很 ...
- 使用高德地图的逆向地址,获取坐标点
// 链接高德地图api,逆向获取公司地址的地理坐标点 使用axios获取 let AutonaviApi ="http://restapi.amap.com/v3/geocode/geok ...
- vue 高德地图API根据地址获取经纬度/根据经纬度获取地址
1.引入 <script type="text/javascript" src="https://webapi.amap.com/maps?v=1.4.14&am ...
- 利用高德地图根据详细地址获取经纬度(工具类)
废话不多说,直接上代码: package org.changneng.framework.frameworkweb.utils;import java.io.BufferedReader; impor ...
- java 根据ip地址获取城市_Java 根据ip地址获取当前城市
maxmind免费数据库maven位置:用来获取所要用的数据库文件(GeoLite2-City.mmdb) org.elasticsearch geolite2-databases 20151029 ...
- android通过ip查询地址吗,Android 根据IP地址获取城市
manifest中要加的permission和activity_main.xml 参照上. MainActivity.java package com.example.test; import jav ...
最新文章
- 获取树莓派4ip地址(手机热点获取)
- VS2005 常用快捷键
- Hive与Hbase结合使用
- c语言实现两个有序链表的合并(代码示例)
- QQ动态头像和动态主页
- 为什么说阿里巴巴已进化成为一家世界级的科技公司?
- GCC Command Options
- JVM调优之:垃圾收集器
- Android----- MD5加密(登录注册得到与IOS相同的加密值,并且解决两个平台汉字加密不相同问题)...
- 用HTML5做一个个人网站,此文仅展示个人主页界面。内附源代码下载地址
- openstack-packstack一键式在线部署
- 报错:for..in loops iterate over the entire prototype chain, which is virtually never what you want.
- 中轴型SpA的两种诊断分支具有可比性
- 【JavaScript】重温第一次
- Python:奇数之和
- Visio 安装激活方法
- Python加密有敏感信息的Word/Excel等文件
- 关于mac的wintogo制作(不需要win电脑不需要鼠标)
- DT时代下数据安全运营面临的主要挑战
- 天若OCR文字识别 v1.2.0