项目需要根据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的更多相关文章

  1. 黄聪:分享几个免费IP地址查询接口(API)

    淘宝IP地址库 提供的服务包括:1. 根据用户提供的IP地址,快速查询出该IP地址所在的地理信息和地理相关的信息,包括国家.省.市和运营商.2. 用户可以根据自己所在的位置和使用的IP地址更新我们的服 ...

  2. 分享几个免费IP地址查询接口(API)

    淘宝IP地址库 提供的服务包括:1. 根据用户提供的IP地址,快速查询出该IP地址所在的地理信息和地理相关的信息,包括国家.省.市和运营商.2. 用户可以根据自己所在的位置和使用的IP地址更新我们的服 ...

  3. API之IP地址查询---权威的IP地址查询接口集合

    原文地址:http://yushine.iteye.com/blog/1717586 推荐实用IP138 http://www.baidu.com/s?wd=IP&rsv_spt=1& ...

  4. 齐全的IP地址查询接口及调用方法(转)

    设计蜂巢IP地址查询接口:http://www.hujuntao.com/api/ip/ip.php 腾讯IP地址查询接口:http://fw.qq.com/ipaddress 新浪IP地址查询接口: ...

  5. IP地址查询接口及调用方法

    1.查询地址 搜狐IP地址查询接口(IP):http://pv.sohu.com/cityjson 1616 IP地址查询接口(IP+地址):http://w.1616.net/chaxun/ipto ...

  6. IP地址查询接口

    新浪的IP地址查询接口:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js 新浪多地域测试方法:http://int.dpool. ...

  7. 太平洋网络ip地址查询接口使用,返回json格式,默认返回jsonp

    http://whois.pconline.com.cn/ipJson.jsp?json=true

  8. 分享几个免费IP地址查询API接口

    几个免费IP地址查询API接口 1.IP地址查询接口:http://apis.juhe.cn/ip/ip2addr要先去https://www.juhe.cn/docs/api/...申请APPKEY ...

  9. 几个免费IP地址查询API接口

    转:http://blog.csdn.net/ishxiao/article/details/52670242 -------------------------------------------- ...

随机推荐

  1. pycharm开发django项目 static报404解决方法

    settings文件中确保有以下配置 # Static files (CSS, JavaScript, Images)# https://docs.djangoproject.com/en/1.10/ ...

  2. C166 结构按字节访问的设置

    PACK Compiler Directive Home » Compiling Programs » Directives » Reference » PACK Abbreviation None. ...

  3. golang bug Unknown load command 0x32 (50)

    问题 编译文件时报错: /usr/local/go/pkg/tool/darwin_amd64/link: /usr/local/go/pkg/tool/darwin_amd64/link: comb ...

  4. mongodb morphia删除数组中指定条件的数据

    先看mongodb操作: db.test.update({"msgid":170},{"$pull":{"msg":{"comti ...

  5. LINUX下PHP网页生成快照(截屏)(xvfb and wkhtmltoimage)

    经测试,可以使用 利用php截屏或实现网页快照我们需要用一个工具:xvfb and wkhtmltoimagek哦,这个工具目前只能在linux系统中使用,下面有兴趣的朋友可进入参考. 在做旅游攻略时 ...

  6. jenkins 邮件配置 二 ***

    Jenkins 有两种邮件通知方式: 1.Jenkins自带的“E-mail Notification” 2.插件:Extended E-mail Notification,是可编辑的邮件配置方式. ...

  7. 转自高手关于SQL 锁的叙述。。(nolock,rowlock,tablock,xlock,paglock)

    锁的概述 一. 为什么要引入锁 多个用户同时对数据库的并发操作时会带来以下数据不一致的问题: [丢失更新]A,B两个用户读同一数据并进行修改,其中一个用户的修改结果破坏了另一个修改的结果,比如订票系统 ...

  8. pytest.11.生成xml格式的测试报告

    From: http://www.testclass.net/pytest/report/ pytest有非常友好的命令行报告输出,在做用例开发的时候,这是极好的.然而我们在运行用例后经常会需要将测试 ...

  9. ALGO-125_蓝桥杯_算法训练_王、后传说(DFS)

    问题描述 地球人都知道,在国际象棋中,后如同太阳,光芒四射,威风八面,它能控制横.坚.斜线位置. 看过清宫戏的中国人都知道,后宫乃步步惊心的险恶之地.各皇后都有自己的势力范围,但也总能找到相安无事的办 ...

  10. 【转】SOA架构设计经验分享—架构、职责、数据一致性

      1.背景介绍       最近一段时间都在做系统分析和设计工作,面对的业务是典型的重量级企业应用方向.突然发现很多以往觉得很简单的问题变得没有想象的那么容易,最大的问题就 是职责如何分配.论系统架 ...