1. public static String getAddressByIp(String ip) {
  2. String resout = "";
  3. try {
  4. if (isInner(ip) || "127.0.0.1".equals(ip)) {
  5. resout = "内网IP:" + ip;
  6. } else {
  7. String str = getJsonContent("http://ip.taobao.com/service/getIpInfo.php?ip=" + ip);
  8. System.out.println(str);
  9. JsonObject jsonObject = (JsonObject) new JsonParser().parse(str);
  10. if (jsonObject != null) {
  11. JsonElement data = jsonObject.get("data");
  12. int code = jsonObject.get("code").getAsInt();
  13. if (code == 0) {
  14. resout = data.getAsJsonObject().get("country").getAsString()
  15. + data.getAsJsonObject().get("area").getAsString()
  16. + data.getAsJsonObject().get("city").getAsString()
  17. + data.getAsJsonObject().get("isp").getAsString();
  18. } else {
  19. resout = "未知";
  20. }
  21. }
  22. }
  23.  
  24. } catch (Exception e) {
  25. e.printStackTrace();
  26. resout = "未知";
  27. }
  28. System.out.println("result: " + resout);
  29. return resout;
  30. }
  31.  
  32. public static String getJsonContent(String urlStr) {
  33. String result = "";
  34. try {
  35. // 获取HttpURLConnection连接对象
  36. URL url = new URL(urlStr);
  37. HttpURLConnection httpConn = (HttpURLConnection) url.openConnection();
  38. // 设置连接属性
  39. httpConn.setConnectTimeout(3000);
  40. httpConn.setDoInput(true);
  41. httpConn.setRequestMethod("GET");
  42. // 获取相应码
  43. int respCode = httpConn.getResponseCode();
  44. if (respCode == 200) {
  45. result = ConvertStream2Json(httpConn.getInputStream());
  46. }
  47. } catch (MalformedURLException e) {
  48. e.printStackTrace();
  49. } catch (IOException e) {
  50. e.printStackTrace();
  51. }
  52. return result;
  53. }
  54.  
  55. private static String ConvertStream2Json(InputStream inputStream) {
  56. String jsonStr = "";
  57. try {
  58. InputStreamReader inputStreamReader = new InputStreamReader(inputStream, "utf-8");
  59. BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
  60.  
  61. String str = null;
  62. StringBuffer buffer = new StringBuffer();
  63. while ((str = bufferedReader.readLine()) != null) {
  64. buffer.append(str);
  65. }
  66. jsonStr = buffer.toString();
  67. } catch (IOException e) {
  68. e.printStackTrace();
  69. }
  70. return jsonStr;
  71. }
  72. private static boolean isInner(String ip) {
  73. String reg = "(10|172|192)\\.([0-1][0-9]{0,2}|[2][0-5]{0,2}|[3-9][0-9]{0,1})\\.([0-1][0-9]{0,2}|[2][0-5]{0,2}|[3-9][0-9]{0,1})\\.([0-1][0-9]{0,2}|[2][0-5]{0,2}|[3-9][0-9]{0,1})";// 正则表达式=。
  74. Pattern p = Pattern.compile(reg);
  75. Matcher matcher = p.matcher(ip);
  76. return matcher.find();
  77. }

根据ip获取对应的省市区的更多相关文章

  1. 百度地图用ip获取当前位置的经纬度(高精度)

    步骤比较简单先上百度地图API官网,申请一个应用AK(访问凭据):查看一下高进度定位的API,看看是否都符合要求下面直接上代码 /** * 根据ip获取地理坐标 * @param ip * @retu ...

  2. 根据ip获取用户地理位置

    各大网站都提供根据ip获取用户地理位置信息,这里以新浪的接口为例子 接口地址为:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js ...

  3. C# 解析百度天气数据,Rss解析百度新闻以及根据IP获取所在城市

    百度天气 接口地址:http://api.map.baidu.com/telematics/v3/weather?location=上海&output=json&ak=hXWAgbsC ...

  4. PHP通过IP 获取 地理位置(实例)

    发布:JB02   来源:脚本学堂  分享一例php代码,实现通过IP地址获取访问者的地理位置,在php编程中经常用到,有需要的朋友参考下吧.本节内容:PHP通过IP获取地理位置 例子: 复制代码代码 ...

  5. PHP通过IP 获取 地理位置(实例代码)

    发布:JB02   来源:脚本学堂 分享一例php代码,实现通过IP地址获取访问者的地理位置,在php编程中经常用到,有需要的朋友参考下吧.本节内容:PHP通过IP获取地理位置 例子: 复制代码代码示 ...

  6. Android模拟器的ip获取以及模拟器之间socket通信

    Android模拟器的ip获取以及模拟器之间socket通信           http://kalogen.iteye.com/blog/1565507 作者:李波 实现网络五子棋时用到了两个设备 ...

  7. C# 根据IP获取省市

    /// <summary> /// 根据IP获取省市 /// </summary> public void GetAddressByIp() { string ip = &qu ...

  8. php根据IP获取经纬度信息--百度地图篇

    一.前言 之前一篇写过 php根据IP获取IP所在城市  ,但是还想再精确一点,获取这个IP所在的经纬度信息,该怎么办呢? 百度地图为我提供了一种解决方案(当然还有其他的解决方案). 先总的来数一下, ...

  9. 根据IP获取所在的国家城市

    根据IP获取所在的国家城市 新浪的IP地址查询接口:http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js 新浪多地域测试方法:htt ...

随机推荐

  1. System.nanoTime与System.currentTimeMillis的区别(转)

    原文地址:http://blog.csdn.net/dliyuedong/article/details/8806868 平时产生随机数时我们经常拿时间做种子,比如用System.currentTim ...

  2. golang 数组、切片、map

    一.数组(类似python的list) 数组的长度一旦定义了就不能动态增长.并且存储的数据类型必须相同. 创建方法: var 数组名 [长度]数据类型 例如: package main import ...

  3. IIS部署ASP.Net Core 502.5错误和解决

    在Win7的机器上部署ASP.Net Core程序,老是提示502.5错误. 已经安装了 Microsoft Visual C++ 2015 Redistributable .NET Core Win ...

  4. BZOJ 1671: [Usaco2005 Dec]Knights of Ni 骑士 (bfs)

    题目: https://www.lydsy.com/JudgeOnline/problem.php?id=1671 题解: 按题意分别从贝茜和骑士bfs然后meet_in_middle.. 把一个逗号 ...

  5. Elasticsearch6.5.2 X-pack破解及安装教程

    先正常安装 elasticSearch, kibana. 1. 如果是6.5.2版本,可以直接下载jar文件:https://download.csdn.net/download/bigben0123 ...

  6. [九省联考2018]秘密袭击coat

    [九省联考2018]秘密袭击coat 研究半天题解啊... 全网几乎唯一的官方做法的题解:链接 别的都是暴力.... 要是n=3333暴力就完了. 一.问题转化 每个联通块第k大的数,直观统计的话,会 ...

  7. C++ bitset 用法

    C++的 bitset 在 bitset 头文件中,它是一种类似数组的结构,它的每一个元素只能是0或1,每个元素仅用1bit空间. 下面是具体用法 构造函数 bitset常用构造函数有四种,如下 bi ...

  8. Notepad++ 的函数参数提示错误的问题终于解决了

    看第3张图片,明明我输入的是 print_double(), 提示的却是 print() 函数的参数. 这个问题困扰了我半年,今天晚上找到解决问题的办法:

  9. 第五篇-ubuntu下插入U盘,显示可读系统。

    如果插上U盘,发现里面的文件都上了锁,显示可读.并且在其它电脑上存在同样的情况. 可是尝试按shift键插入U盘.

  10. Spring mvc 整合PageHelper

    Integer page=queryBean.getPage(); Integer pageSize=queryBean.getPageSize(); response.setContentType( ...