最近公司让做一个用户登录、付费的时候记录操作人的地理位置。
搜了很多帖子,一开始用的淘宝的api,但是用了一段时间发现,这个api当获取的次数多了之后,就报404了,导致很多记录没有记录地址,虽然淘宝这个api的位置很全精确到市县级,但是404的次数太多,并不实用。
淘宝API
缺点:

1.有时候调用速度很快,但是有时候回超过30秒而导致服务器报错,终结页面的运行

<?php
$ip = file_get_contents("http://ip.taobao.com/service/getIpInfo.php?ip=".$_GET["ip"]);
$ip = json_decode($ip,true);
?>

结果是返回JSON格式的如下


腾讯API
缺点:好像用户试用WIFI情况下定位不准确或者不会有返回数据

http://ip.taobao.com/service/getIpInfo.php?ip=IP

结果是返回JSON格式(别人告诉的,我测试并不好使)
搜狐API
缺点:

1.不能使用特定IP来查询,只能使用API原本查询的IP

2.在服务器测试中,API直接查询出了服务器的IP,并不是用户的IP

(这两个缺点感觉是我写代码的问题,但是我不知道怎么解,如果有大神解决了麻烦告诉我一下怎么解,谢谢)

搜狐IP地址查询接口(默认GBK):http://pv.sohu.com/cityjson
搜狐IP地址查询接口(可设置编码):http://pv.sohu.com/cityjson?ie=utf-8
搜狐另外的IP地址查询接口:http://txt.go.sohu.com/ip/soip

第一个和第二个分别是不同编码的API,返回结果如下


第三个API虽然有结果原谅我小白看不懂怎么使用,返回结果如下


126API
缺点:返回格式有点问题,不是UTF-8格式,转格式也失败

126API:http://ip.ws.126.net/ipquery?ip=IP

返回结果如下


由此可见以上API虽然都能搜寻出来所在地理位置,但是不精确,而且格式很乱,不易于使用,最后给大家推荐一款功能强大而且实用的api,那就是

太平洋API

这个API很强大:http://whois.pconline.com.cn

详细的看一下里面的说明吧!
我采用的是
http://whois.pconline.com.cn/ipJson.jsp?callback=testJson&ip=IP
这个链接;
这是返参:定位很明确。

给大家付上代码:

private static String readAll(Reader rd) throws IOException {StringBuilder sb = new StringBuilder();int cp;while ((cp = rd.read()) != -1) {sb.append((char) cp);}return sb.toString();}
public static JSONObject readJsonFromUrl(String url) throws IOException, JSONException {InputStream is = new URL(url).openStream();try {BufferedReader rd = new BufferedReader(new InputStreamReader(is, Charset.forName("gbk")));String jsonText = readAll(rd);jsonText = jsonText.replace("if(window.testJson)","");jsonText = jsonText.substring(21);jsonText = jsonText.substring(0,jsonText.length()-10);JSONObject json = new JSONObject(jsonText);return json;} finally {is.close();// System.out.println("同时 从这里也能看出 即便return了,仍然会执行finally的!");}}
public static void main(String[] args) {JSONObject json = readJsonFromUrl("http://whois.pconline.com.cn/ipJson.jsp?callback=testJson&ip="+ip);System.out.println(json.toString());System.out.println(json.get("addr"));}

最后直接获取addr这个值就可以了.

常用的几种API获取ip地理位置的使用方法相关推荐

  1. 调用腾讯地图API、高德地图API 获取当前地理位置、经纬度

    调用腾讯地图API.高德地图API 获取当前地理位置.经纬度 web开发中,很多情况下都会需要获取当前位置的经纬度,在网上找了几个不同的地图,最终找到兼容比较好的腾讯地图API 1.调用腾讯地图API ...

  2. 计算机自动配置的ip地址,电脑自动获取IP地址的设置方法(图文)

    在我们使用电脑的过程中,有时候需要根据网络的需求将电脑IP地址设置为自动获取,对网络知识不太了解的朋友遇到此类问题可能不知道怎么去设置,在此小编总结了有关电脑设置自动获取IP地址的相关方法,感兴趣的朋 ...

  3. php基于新浪ip库获取城市,PHP基于新浪IP库获取IP详细地址的方法

    [导读]这篇文章主要介绍了PHP基于新浪IP库获取IP详细地址的方法,涉及php正则.curl及编码转换相关操作技巧 本文实例讲述了PHP基于新浪IP库获取IP详细地址的方法.代码如下<?php ...

  4. php 获取 ip地址_PHP 获取ip地址的六种方法

    本篇文章主要介绍PHP 获取ip地址的六种方法,感兴趣的朋友参考下,希望对大家有所帮助. 代码一:function getip() { static $ip = ''; $ip = $_SERVER[ ...

  5. 通过百度普通IP定位API获取IP的地理位置java根据ip定位地理位置

    在项目开发中,需要在登录日志或者操作日志中记录客户端ip所在的地理位置.目前根据ip定位地理位置的第三方api有好几个,淘宝.新浪.百度等,这三种其实也有些缺点的:淘宝,开始几次可以成功根据ip获取对 ...

  6. 高德获取ip地理位置

    /*** 获取IP的实际地理位置* 传入一个对象,并且对象里有ip元素*/protected function getLocation($lists){// 高德key$gdKey = ['sdfss ...

  7. 通过API获取ip地址以及城市和运营商

    新浪API http://pv.sohu.com/cityjson?ie=utf-8 直接访问,我这里使用postman进行了测试 可以看到,直接能拿到ip地址和地区城市,经过测试我发现了个问题,如果 ...

  8. android根据ip获取域名_android常用工具类 通过域名获取ip

    /** * 编写多线程程序是为了实现多任务的并发执行,从而能够更好地与用户交互. * 一般有三种方法,Thread,Runnable,Callable. * Runnable和Callable的区别是 ...

  9. Android10一直获取IP地址,Android 获取IP地址的实现方法

    Android 获取IP地址 最近做项目,有一个需求是Android设备获取当前IP的功能,经过一番查询资料解决了,记录下实现方法. 1.使用WIFI 首先设置用户权限 其次,代码如下 public ...

最新文章

  1. 如何优雅设计 API 接口,实现统一格式返回?
  2. mysql安装主从配置_MySQL安装与主从配置
  3. JS中实现replaceAll的方法
  4. OAuth 2.0 - Authorization Code授权方式详解
  5. Hive什么时候可以用别名?
  6. 基于Linux的防火墙不安全
  7. 获得CPU利用率(python调用top命令实现)
  8. 8个优质自学网站收藏
  9. 热门好用的空号检测API推荐
  10. 1032. 字符流(每日一难phase2--days28)
  11. Java调用的高德api,通过经纬度查询地址信息 - 记录
  12. 小窗终曲说策划(有空就看看吧,可能对设计想法有所帮助,不仅仅是游戏方面
  13. 键盘拆开重新安装步骤_笔记本键盘怎么拆——键盘分拆详细步骤
  14. 163微信邮箱在哪里找到,你知道微信邮箱地址在哪里找到吗
  15. 人民币为什么 不继续升值
  16. 同一局域网下多台电脑共享文件夹
  17. 关于饭局狼人杀app上的12人守卫局的那些事儿
  18. vue整合uniapp_uni-app仿微信App界面|vue+uniapp聊天室|仿微信朋友圈
  19. 关于64位UBUNTU硬盘安装方式详解,和提示找不到vmlinuz的分析
  20. 云计算产品学习(2)

热门文章

  1. ssm+java+vue微信小程序的驾校预约管理系统#毕业设计
  2. 虚拟机mac已连接以太网但是依旧没网络解决方法
  3. 易飞erp怎么修改服务器ip,易飞连接失败处理方法
  4. 基于android智能手机的动态心电监测系统设计,基于Android智能手机的动态心电监测系统设计...
  5. [rk3188] 在系统中实现伪静默安装
  6. 魔兽世界怀旧服显示从服务器断开,魔兽世界怀旧服服务器断开连接该怎么办_怀旧服服务器断开连接解决方法_3DM网游...
  7. 2021漏洞总结3-优化版检测脚本
  8. 2021.2.10记一次极路由3HC5861无ROOT刷机登录ssh的经历
  9. 关于RBM、DBN和相关问题
  10. AD17画PCB步骤总结