来源:http://www.ipplus360.com/tech/api/
来源:http://blog.csdn.net/Cryhelyxx/article/details/40862101

精确查询坐标:埃文
接口描述:查询IP所在的位置可精确到街道级别 (此接口默认返回经纬度为WGS84坐标系,其他坐标系请参考示例)
接口地址:https://mall.ipplus360.com/ip
请求方式:HTTPS GET
请求示例:https://mall.ipplus360.com/ip/locate/api?key=您申请的KEY&ip=您需要查询的ip&coordsys=WGS84
QUERY请求参数
名称  类型  必填  示例值 描述
key String  是       您申请的key
ip  String  是   8.8.8.8 查询的IP
coordsys    String  否   BD09/WGS84  坐标系名称(二选一)
返回参数
名称  类型  示例值 描述
code    number  200 状态码
ip  String  8.8.8.8 查询的IP
charge  Boolean true    是否需要充值
coordsys    String  BD09/WGS84  坐标系名称
data    Object  {...}   返回的数据
msg String  查询成功    状态码描述
返回示例值{"code": 200,"ip": "8.8.8.8","charge": true,"coordsys": "WGS84","data": {"continent": "北美洲","country" : "美国","zipcode" : "","timezone" : "UTC+8","accuracy" : "国家","owner" : "Google","source" : "数据挖掘","correctness" : 1,"consistency" : 1,"multiAreas": [{"lat": "39.825700", //默认返回WGS84坐标系 纬度"lng": "-82.945500",//默认返回WGS84坐标系 经度"radius": "","prov": "","city": "","district": "",}],},"msg": "查询成功"}1. 第三方APIps:下面参数ip:  218.192.3.42 用于测试淘宝API:http://ip.taobao.com/service/getIpInfo.php?ip=218.192.3.42新浪API:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=218.192.3.42pconline API:http://whois.pconline.com.cn/百度API:http://api.map.baidu.com/location/ip?ip=218.192.3.422. 工具类AddressUtils.java[java] view plain copyimport java.io.BufferedReader;  import java.io.DataOutputStream;  import java.io.IOException;  import java.io.InputStreamReader;  import java.io.UnsupportedEncodingException;  import java.net.HttpURLConnection;  import java.net.URL;  /** * 根据IP地址获取详细的地域信息 * 淘宝API : http://ip.taobao.com/service/getIpInfo.php?ip=218.192.3.42 * 新浪API : http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=218.192.3.42 * @File AddressUtils.java * @Package org.gditc.weicommunity.util * @Description TODO * @Copyright Copyright © 2014 * @Site https://github.com/Cryhelyxx * @Blog http://blog.csdn.net/Cryhelyxx * @Email cryhelyxx@gmail.com * @Company GDITC * @Date 2014年11月6日 下午1:46:37 * @author Cryhelyxx * @version 1.0 */  public class AddressUtils {  /** *  * @param content *            请求的参数 格式为:name=xxx&pwd=xxx * @param encoding *            服务器端请求编码。如GBK,UTF-8等 * @return * @throws UnsupportedEncodingException */  public static String getAddresses(String content, String encodingString)  throws UnsupportedEncodingException {  // 这里调用淘宝API  String urlStr = "http://ip.taobao.com/service/getIpInfo.php";  // 从http://whois.pconline.com.cn取得IP所在的省市区信息  String returnStr = getResult(urlStr, content, encodingString);  if (returnStr != null) {  // 处理返回的省市区信息  System.out.println("(1) unicode转换成中文前的returnStr : " + returnStr);  returnStr = decodeUnicode(returnStr);  System.out.println("(2) unicode转换成中文后的returnStr : " + returnStr);  String[] temp = returnStr.split(",");  if(temp.length<3){  return "0";//无效IP,局域网测试  }  return returnStr;  }  return null;  }  /** * @param urlStr *            请求的地址 * @param content *            请求的参数 格式为:name=xxx&pwd=xxx * @param encoding *            服务器端请求编码。如GBK,UTF-8等 * @return */  private static String getResult(String urlStr, String content, String encoding) {  URL url = null;  HttpURLConnection connection = null;  try {  url = new URL(urlStr);  connection = (HttpURLConnection) url.openConnection();// 新建连接实例  connection.setConnectTimeout(2000);// 设置连接超时时间,单位毫秒  connection.setReadTimeout(2000);// 设置读取数据超时时间,单位毫秒  connection.setDoOutput(true);// 是否打开输出流 true|false  connection.setDoInput(true);// 是否打开输入流true|false  connection.setRequestMethod("POST");// 提交方法POST|GET  connection.setUseCaches(false);// 是否缓存true|false  connection.connect();// 打开连接端口  DataOutputStream out = new DataOutputStream(connection  .getOutputStream());// 打开输出流往对端服务器写数据  out.writeBytes(content);// 写数据,也就是提交你的表单 name=xxx&pwd=xxx  out.flush();// 刷新  out.close();// 关闭输出流  BufferedReader reader = new BufferedReader(new InputStreamReader(  connection.getInputStream(), encoding));// 往对端写完数据对端服务器返回数据  // ,以BufferedReader流来读取  StringBuffer buffer = new StringBuffer();  String line = "";  while ((line = reader.readLine()) != null) {  buffer.append(line);  }  reader.close();  return buffer.toString();  } catch (IOException e) {  e.printStackTrace();  } finally {  if (connection != null) {  connection.disconnect();// 关闭连接  }  }  return null;  }  /** * unicode 转换成 中文 *  * @author fanhui 2007-3-15 * @param theString * @return */  public static String decodeUnicode(String theString) {  char aChar;  int len = theString.length();  StringBuffer outBuffer = new StringBuffer(len);  for (int x = 0; x < len;) {  aChar = theString.charAt(x++);  if (aChar == '\\') {  aChar = theString.charAt(x++);  if (aChar == 'u') {  int value = 0;  for (int i = 0; i < 4; i++) {  aChar = theString.charAt(x++);  switch (aChar) {  case '0':  case '1':  case '2':  case '3':  case '4':  case '5':  case '6':  case '7':  case '8':  case '9':  value = (value << 4) + aChar - '0';  break;  case 'a':  case 'b':  case 'c':  case 'd':  case 'e':  case 'f':  value = (value << 4) + 10 + aChar - 'a';  break;  case 'A':  case 'B':  case 'C':  case 'D':  case 'E':  case 'F':  value = (value << 4) + 10 + aChar - 'A';  break;  default:  throw new IllegalArgumentException(  "Malformed      encoding.");  }  }  outBuffer.append((char) value);  } else {  if (aChar == 't') {  aChar = '\t';  } else if (aChar == 'r') {  aChar = '\r';  } else if (aChar == 'n') {  aChar = '\n';  } else if (aChar == 'f') {  aChar = '\f';  }  outBuffer.append(aChar);  }  } else {  outBuffer.append(aChar);  }  }  return outBuffer.toString();  }  // 测试  public static void main(String[] args) {  AddressUtils addressUtils = new AddressUtils();  // 测试ip 219.136.134.157 中国=华南=广东省=广州市=越秀区=电信  String ip = "122.49.20.247";  String address = "";  try {  address = addressUtils.getAddresses("ip="+ip, "utf-8");  } catch (UnsupportedEncodingException e) {  // TODO Auto-generated catch block  e.printStackTrace();  }  System.out.println(address);  // 输出结果为:广东省,广州市,越秀区  }  }  3. 测试方法下面采用单元测试[java] view plain copy@Test  public void getAddressByIp() throws Exception {  // 参数ip  String ip = "219.136.134.157";  // json_result用于接收返回的json数据  String json_result = null;  try {  json_result = AddressUtils.getAddresses("ip=" + ip, "utf-8");  } catch (UnsupportedEncodingException e) {  e.printStackTrace();  }  JSONObject json = JSONObject.fromObject(json_result);  System.out.println("json数据: " + json);  String country = JSONObject.fromObject(json.get("data")).get("country").toString();  String region = JSONObject.fromObject(json.get("data")).get("region").toString();  String city = JSONObject.fromObject(json.get("data")).get("city").toString();  String county = JSONObject.fromObject(json.get("data")).get("county").toString();  String isp = JSONObject.fromObject(json.get("data")).get("isp").toString();  String area = JSONObject.fromObject(json.get("data")).get("area").toString();  System.out.println("国家: " + country);  System.out.println("地区: " + area);  System.out.println("省份: " + region);  System.out.println("城市: " + city);  System.out.println("区/县: " + county);  System.out.println("互联网服务提供商: " + isp);  String address = country + "/";  address += region + "/";  address += city + "/";  address += county;  System.out.println(address);  }  4. 打印结果下面是eclipse控制台的打印结果[plain] view plain copy(1) unicode转换成中文前的returnStr : {"code":0,"data":{"country":"\u4e2d\u56fd","country_id":"CN","area":"\u534e\u5357","area_id":"800000","region":"\u5e7f\u4e1c\u7701","region_id":"440000","city":"\u5e7f\u5dde\u5e02","city_id":"440100","county":"\u8d8a\u79c0\u533a","county_id":"440104","isp":"\u7535\u4fe1","isp_id":"100017","ip":"219.136.134.157"}}  (2) unicode转换成中文后的returnStr : {"code":0,"data":{"country":"中国","country_id":"CN","area":"华南","area_id":"800000","region":"广东省","region_id":"440000","city":"广州市","city_id":"440100","county":"越秀区","county_id":"440104","isp":"电信","isp_id":"100017","ip":"219.136.134.157"}}  json数据: {"code":0,"data":{"country":"中国","country_id":"CN","area":"华南","area_id":"800000","region":"广东省","region_id":"440000","city":"广州市","city_id":"440100","county":"越秀区","county_id":"440104","isp":"电信","isp_id":"100017","ip":"219.136.134.157"}}  国家: 中国  地区: 华南  省份: 广东省  城市: 广州市  区/县: 越秀区  互联网服务提供商: 电信  中国/广东省/广州市/越秀区  OK, Enjoy it!!!

java 根据IP地址获取地理位置相关推荐

  1. java 根据ip地址获取地理位置及运营商。

    1.基于淘宝API /**      * 根据ip获取城市(运营商)名称      * @param ip      * @return      * @throws Exception      * ...

  2. java根据ip地址获取城市地域信息

    java根据ip地址获取城市地域信息 这里提供两个公开的接口,一个是阿里的,一个是新浪的 http://ip.taobao.com/service/getIpInfo.php?ip=123.139.9 ...

  3. C# 网络编程之通过ip地址获取地理位置(补充)

    前面我写过一篇文章"C# 网络编程之获取本机名.ip地址.域名.物理位置"里面可以根据输入的网址根据其ip地址获取器物理位置,其中该部分主要代码是通过有道网提供的在线第三方接口实现 ...

  4. Java 根据IP地址获取城市(ip2region)

    根据IP地址获取城市(ip2region) Ip2region是什么? Ip2region特性 99.9%准确率 标准化的数据格式 体积小 查询速度快 多查询客户端的支持 maven集成 小坑 Ip2 ...

  5. 根据IP地址获取地理位置

    之前做了一个天气预报,里面就用到了根据IP自动定位技术,今天就给大家分享一波:根据IP地址自动定位. 想要实现根据IP地址定位,你要做的事有如下两点: 第一:获取本机的IP地址 注意:这里指的是公网的 ...

  6. 【转载】 java根据ip地址获取详细地域信息

    互联网有很多接口可以实现通过ip查询到具体的位置,如下: 通过淘宝IP地址库获取IP位置 1. 请求接口(GET):http://ip.taobao.com/service/getIpInfo.php ...

  7. java通过ip地址获取相应对应的城市

    发现了一比较好的本地ip对应地址的库资源文件--做一下笔记. 官方网站 https://dev.maxmind.com/geoip/geoip2/geolite2/ 这里提供了免费的库文件,还有很好的 ...

  8. 根据ip地址获取地理位置及坐标

    根据ip获取地理位置信息,不用http和webservice接口,减少请求时间.我们可以利用了GeoLite2 库,GeoLite2 数据库是一个免费的 IP 地理定位数据库,GeoLite2 Cou ...

  9. JAVA根据IP地址获取省份城市和经纬度(可获取国家名称 淘宝高德API如果是国外IP获取到的为空)

    所需jar包maven地址: <!-- 根据ip获取位置 --><dependency><groupId>com.maxmind.geoip2</groupI ...

最新文章

  1. 破解制造业困局:从实际案例看制造业如何缩短订单交付周期?
  2. 各大互联网大厂年终奖一览表!
  3. 字节跳动李本超:一年成为 Committer,我与 Flink 社区的故事
  4. Xml解析作业与Xml建模andXml建模作业
  5. UVAOJ1586题解
  6. labelImg 使用以及安装教程---图像标注工具
  7. 如何进入mysql命令界面
  8. ArduinoUNO实战-第十五章-液晶LCD1602实验
  9. 列联表分析-独立性检验
  10. MATLAB实现Enigma 密码机
  11. 高盛报告:人工智能、机器学习和数据将推动未来生产力的发展
  12. 银行招聘笔试计算机知识,【银行招聘】银行考试笔试中的综合知识考什么?
  13. nodejs+vue+elementui 青少年编程在线考试系统python java php
  14. C++三目运算符(简述)
  15. Linux 系统管理 : usermod 命令详解
  16. IVD行业常见的核酸提取方法及原理
  17. SAP MIRO付款条件与折扣
  18. 快速加密、解密压缩包密码
  19. Java 之父Oracle
  20. linux中文件内容是乱码怎么办,Linux中文本的中文乱码怎么办

热门文章

  1. 关于Vmware Workstation 安装 MAC OS
  2. 如何做好独立的B2C商城系统运营,实现转化与交易?——甲由科技
  3. 计算机毕业设计(附源码)python休闲网络宾馆管理
  4. VTP(VLAN的中继协议VLAN Trunking Protocol)
  5. proj Java_proj 一个炫酷的飞机大战java游戏,很好玩的,很酷炫 用了 的图形界面 Games 256万源代码下载- www.pudn.com...
  6. (12)全民小视频引流脚本模块化开发06-已关注用户取关By飞云脚本学院
  7. 通过MODBUS转ETHERNET IP网关将变送器接入AB PLC
  8. ESP32-C3开发之旅 基础篇6 ESP32-C3 SPI通信
  9. 【bug】Failed at the node-sass@4.14.1 postinstall script(终于圆满解决)
  10. ipc_namespace