常用的几种API获取ip地理位置的使用方法
最近公司让做一个用户登录、付费的时候记录操作人的地理位置。
搜了很多帖子,一开始用的淘宝的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地理位置的使用方法相关推荐
- 调用腾讯地图API、高德地图API 获取当前地理位置、经纬度
调用腾讯地图API.高德地图API 获取当前地理位置.经纬度 web开发中,很多情况下都会需要获取当前位置的经纬度,在网上找了几个不同的地图,最终找到兼容比较好的腾讯地图API 1.调用腾讯地图API ...
- 计算机自动配置的ip地址,电脑自动获取IP地址的设置方法(图文)
在我们使用电脑的过程中,有时候需要根据网络的需求将电脑IP地址设置为自动获取,对网络知识不太了解的朋友遇到此类问题可能不知道怎么去设置,在此小编总结了有关电脑设置自动获取IP地址的相关方法,感兴趣的朋 ...
- php基于新浪ip库获取城市,PHP基于新浪IP库获取IP详细地址的方法
[导读]这篇文章主要介绍了PHP基于新浪IP库获取IP详细地址的方法,涉及php正则.curl及编码转换相关操作技巧 本文实例讲述了PHP基于新浪IP库获取IP详细地址的方法.代码如下<?php ...
- php 获取 ip地址_PHP 获取ip地址的六种方法
本篇文章主要介绍PHP 获取ip地址的六种方法,感兴趣的朋友参考下,希望对大家有所帮助. 代码一:function getip() { static $ip = ''; $ip = $_SERVER[ ...
- 通过百度普通IP定位API获取IP的地理位置java根据ip定位地理位置
在项目开发中,需要在登录日志或者操作日志中记录客户端ip所在的地理位置.目前根据ip定位地理位置的第三方api有好几个,淘宝.新浪.百度等,这三种其实也有些缺点的:淘宝,开始几次可以成功根据ip获取对 ...
- 高德获取ip地理位置
/*** 获取IP的实际地理位置* 传入一个对象,并且对象里有ip元素*/protected function getLocation($lists){// 高德key$gdKey = ['sdfss ...
- 通过API获取ip地址以及城市和运营商
新浪API http://pv.sohu.com/cityjson?ie=utf-8 直接访问,我这里使用postman进行了测试 可以看到,直接能拿到ip地址和地区城市,经过测试我发现了个问题,如果 ...
- android根据ip获取域名_android常用工具类 通过域名获取ip
/** * 编写多线程程序是为了实现多任务的并发执行,从而能够更好地与用户交互. * 一般有三种方法,Thread,Runnable,Callable. * Runnable和Callable的区别是 ...
- Android10一直获取IP地址,Android 获取IP地址的实现方法
Android 获取IP地址 最近做项目,有一个需求是Android设备获取当前IP的功能,经过一番查询资料解决了,记录下实现方法. 1.使用WIFI 首先设置用户权限 其次,代码如下 public ...
最新文章
- 如何优雅设计 API 接口,实现统一格式返回?
- mysql安装主从配置_MySQL安装与主从配置
- JS中实现replaceAll的方法
- OAuth 2.0 - Authorization Code授权方式详解
- Hive什么时候可以用别名?
- 基于Linux的防火墙不安全
- 获得CPU利用率(python调用top命令实现)
- 8个优质自学网站收藏
- 热门好用的空号检测API推荐
- 1032. 字符流(每日一难phase2--days28)
- Java调用的高德api,通过经纬度查询地址信息 - 记录
- 小窗终曲说策划(有空就看看吧,可能对设计想法有所帮助,不仅仅是游戏方面
- 键盘拆开重新安装步骤_笔记本键盘怎么拆——键盘分拆详细步骤
- 163微信邮箱在哪里找到,你知道微信邮箱地址在哪里找到吗
- 人民币为什么 不继续升值
- 同一局域网下多台电脑共享文件夹
- 关于饭局狼人杀app上的12人守卫局的那些事儿
- vue整合uniapp_uni-app仿微信App界面|vue+uniapp聊天室|仿微信朋友圈
- 关于64位UBUNTU硬盘安装方式详解,和提示找不到vmlinuz的分析
- 云计算产品学习(2)
热门文章
- ssm+java+vue微信小程序的驾校预约管理系统#毕业设计
- 虚拟机mac已连接以太网但是依旧没网络解决方法
- 易飞erp怎么修改服务器ip,易飞连接失败处理方法
- 基于android智能手机的动态心电监测系统设计,基于Android智能手机的动态心电监测系统设计...
- [rk3188] 在系统中实现伪静默安装
- 魔兽世界怀旧服显示从服务器断开,魔兽世界怀旧服服务器断开连接该怎么办_怀旧服服务器断开连接解决方法_3DM网游...
- 2021漏洞总结3-优化版检测脚本
- 2021.2.10记一次极路由3HC5861无ROOT刷机登录ssh的经历
- 关于RBM、DBN和相关问题
- AD17画PCB步骤总结