IP地址查询接口API
项目需要根据ip查询pos机设备所在的省份信息,经查询有以下几种免费接口:
1. 淘宝IP API http://ip.taobao.com/service/getIpInfo.php?ip=xxx
2. 新浪IP API http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip=xxx
3. 126IP API http://ip.ws.126.net/ipquery?ip=xxx
三种方法经过测试对比后,最终选择了新浪IP API
| API | API格式 | 结果 | 优点 | 缺点 |
| 淘宝IP API | http://ip.taobao.com/service/getIpInfo.php?ip=219.136.49.117 | ![]() |
根据ip可以查询到的地理信息有:国家、省、市、县、运营商,信息维度广,格式规范,精确度高,数据质量有保障。 | 同一个ip连续查第二次时,等待时间相对比较长,一段时间内浏览器会返回request is not finished yet.可能是内部对同一用户对某一个ip访问次数存在限制。 |
| 新浪IP API | http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=219.136.49.117 | ![]() |
响应迅速,返回结果快,并且返回的数据类型可以自定义格式,默认为纯文本格式,根据format的参数定制,可以返回JS、Json格式,数据准确。 | 结果描述没带单位,比如province返回的是广东而不是广东省,返回的信息没有淘宝的全面。 |
| 126IP API | ![]() |
响应迅速,返回结果快。 | 返回结果信息少,数据相对不是很准确,比如香港的ip(219.78.113.243)结果地址会返回广东。 |
引用的包:
import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject; import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
代码如下:
/**
* 根据ip返回省市信息
*
* @param ip 设备所在ip地址
* @return
*/
public static String getProvinceByIp(String ip) {
String path = "http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=" + ip;
String inputInfo = "";
String info = "";
try {
URL url = new URL(path);
HttpURLConnection connection = (HttpURLConnection) url.openConnection();
connection.setReadTimeout(10 * 1000);
connection.setRequestMethod("GET"); InputStreamReader inputStreamReader = new InputStreamReader(connection.getInputStream(), "UTF-8");
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
while ((inputInfo = bufferedReader.readLine()) != null) {
info += inputInfo;
} } catch (MalformedURLException e) {
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}
JSONObject jsonObject = JSONObject.parseObject(info);
String province = jsonObject.get("province").toString();
switch (province) {
case "香港":
case "澳门":
province += province + "特别行政区";
break;
case "北京":
case "上海":
case "天津":
case "重庆":
province += "市";
break;
case "内蒙古":
case "西藏":
province += "自治区";
break;
case "新疆":
province += "维吾尔自治区";
break;
case "宁夏":
province += "回族自治区";
break;
case "广西":
province += "壮族自治区";
break;
default:
province += "省";
break;
}
return province;
}
IP地址查询接口API的更多相关文章
- 黄聪:分享几个免费IP地址查询接口(API)
淘宝IP地址库 提供的服务包括:1. 根据用户提供的IP地址,快速查询出该IP地址所在的地理信息和地理相关的信息,包括国家.省.市和运营商.2. 用户可以根据自己所在的位置和使用的IP地址更新我们的服 ...
- 分享几个免费IP地址查询接口(API)
淘宝IP地址库 提供的服务包括:1. 根据用户提供的IP地址,快速查询出该IP地址所在的地理信息和地理相关的信息,包括国家.省.市和运营商.2. 用户可以根据自己所在的位置和使用的IP地址更新我们的服 ...
- API之IP地址查询---权威的IP地址查询接口集合
原文地址:http://yushine.iteye.com/blog/1717586 推荐实用IP138 http://www.baidu.com/s?wd=IP&rsv_spt=1& ...
- 齐全的IP地址查询接口及调用方法(转)
设计蜂巢IP地址查询接口:http://www.hujuntao.com/api/ip/ip.php 腾讯IP地址查询接口:http://fw.qq.com/ipaddress 新浪IP地址查询接口: ...
- IP地址查询接口及调用方法
1.查询地址 搜狐IP地址查询接口(IP):http://pv.sohu.com/cityjson 1616 IP地址查询接口(IP+地址):http://w.1616.net/chaxun/ipto ...
- IP地址查询接口
新浪的IP地址查询接口:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js 新浪多地域测试方法:http://int.dpool. ...
- 太平洋网络ip地址查询接口使用,返回json格式,默认返回jsonp
http://whois.pconline.com.cn/ipJson.jsp?json=true
- 分享几个免费IP地址查询API接口
几个免费IP地址查询API接口 1.IP地址查询接口:http://apis.juhe.cn/ip/ip2addr要先去https://www.juhe.cn/docs/api/...申请APPKEY ...
- 几个免费IP地址查询API接口
转:http://blog.csdn.net/ishxiao/article/details/52670242 -------------------------------------------- ...
随机推荐
- 关于Adaboost算法
我花了将近一周的时间,才算搞懂了adaboost的原理.这根骨头终究还是被我啃下来了. Adaboost是boosting系的解决方案,类似的是bagging系,bagging系是另外一个话题,还没有 ...
- [C#]async和await刨根问底
上一篇随笔留下了几个问题没能解决:· 调用IAsyncStateMachine.MoveNext方法的线程何时发起的?· lambda的执行为何先于MoveNext方法?· 后执行的MoveNext方 ...
- java程序控制
一.软件生命周期 什么是软件: 软件是程序员根据需求用计算机的语言去编写一系列的指令的集合,能让计算机快速去自动执行.1.1做市场调研----->调研报告书 ======项目经理 1.2可行性分 ...
- 虚拟机怎么发送ctrl+alt+delete组合键
相信各位It的从业人员都遇到过安装了虚拟机搭建测试环境,可是在使用windows服务器版本操作系统的时候.出现要求发送ctrl+alt+delete组合键,才能登陆操作系统.为此咗嚛提供3个方法给您解 ...
- Vivado HLS初识---阅读《vivado design suite tutorial-high-level synthesis》(4)
Vivado HLS初识---阅读<vivado design suite tutorial-high-level synthesis>(4) 1.老样子,首先运行tcl脚本建工程: Vi ...
- 在已有Windows系统基础上安装ubuntu后无Windows启动项
1. 原系统为windows 2. 清出一个不用的分区给linux,使用windows磁盘管理器将该分区重新划分为两个分区,分别用于root和swap 3. 安装过程中ubuntu提示原系统为非UEF ...
- Selenium Python FirefoxWebDriver处理打开保存对话框
代码如下(网上示例): #profile = webdriver.FirefoxProfile(r"C:\Users\Skyyj\AppData\Roaming\Mozilla\Firef ...
- 【springBoot】之配置文件application
springboot使用一个全局的配置文件application.properties或者是application.yml,放在在src/main/recesources下或者在类路径下的/confi ...
- 问题解决:SettingWithCopyWarning: A value is trying to be set on a copy of a slice from a DataFrame
转载:y小川 SettingWithCopyWarning 解决方案 问题场景:我在读取csv文件之后,因为要新增一个特征列并根据已有特征修改新增列的值,结果在修改的时候就碰到了SettingWith ...
- Tomcat Docker容器自动重启问题排查
1. 问题 前两天发现 APP 刷新数据偶尔出现等半天没有响应的情况,感觉不像 APP 的问题,就查了下服务端的日志. 服务端用的是 Java,部署采用的 Docker 官方的 tomcat 镜像,并 ...


