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

摘要:
Ip=[Ip address string]2.响应信息:国家、省、市(县)操作员3。返回的数据格式:{“code”:0,“Data”:{”ip“:”210.75.25254“,”country“:”u4e2du56fd“,”area“:”u534eu5317“,”region“:”u2317u4eacu5e02“,”city“:”u1317u4eacu5e02”,“country”:“”,“isp”:“u7535u4fe1”,”country_id“:”86“,”rea_id“”:“100000”,”region_id“:“110000”,”city_id“:”110000““-1”,“isp_id”:“100017”}}代码值的含义是:0:成功,1:失败。Format=json&ip=218.192.3.42返回值varremote_ ip_info={“ret”:1,“start”:“218.192.0.0”,“end”:“218.192.7.255”,“country”:“u4e2du56fd”,“province”:“u1e7fu4e1c”,“city”:“u2e7fu5d de”,“district”:“”,“isp”:”u6559u80b2u7f51“,“type”:“u5b66u6821”,“desc”:“u 5e7fu5deu5927u5b66u7ebau7ec7 u670du88c5u5b66u9662“};通过jqry$获取相应的数据。获取腾讯IP共享计划的脚本地址获取IP位置:http://ip.qq.com/cgi-bin/searchip?=null){//处理返回的省/市信息System.out.println;String[]temp=returnStr.split(“,”);如果{return“0”;//IP无效,LAN测试}Stringregion=[1]replaceAll;region=解码Unicode;//省份Stringcountry=“”;字符串区域=“”;//Stringregion=“”;字符串=“”;Stringcounty=“”;Stringisp=“”;对于{switch{case1:country=[2].replaceAll;country=decodeUnicode;//全国中断;case3:area=[1].replaceAll;area=decodeUnicode;//地区中断;case5:region=[1].releaseAll;region=decodeUnicode;//省中断;case 7:city=[1].replaceAll

互联网有很多接口可以实现通过ip查询到具体的位置,如下:

通过淘宝IP地址库获取IP位置

1. 请求接口(GET):http://ip.taobao.com/service/getIpInfo.php?ip=[ip地址字串]
2. 响应信息:(json格式的)国家 、省(自治区或直辖市)、市(县)、运营商
3. 返回数据格式:
{"code":0,"data":{"ip":"210.75.225.254","country":"u4e2du56fd","area":"u534eu5317",
"region":"u5317u4eacu5e02","city":"u5317u4eacu5e02","county":"","isp":"u7535u4fe1",
"country_id":"86","area_id":"100000","region_id":"110000","city_id":"110000",
"county_id":"-1","isp_id":"100017"}}
其中code的值的含义为,0:成功,1:失败。 

新浪的接口 :http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=218.192.3.42
返回值
var remote_ip_info = {"ret":1,"start":"218.192.0.0","end":"218.192.7.255","country":"u4e2du56fd","province":"u5e7fu4e1c","city":"u5e7fu5dde","district":"","isp":"u6559u80b2u7f51","type":"u5b66u6821","desc":"u5e7fu5ddeu5927u5b66u7ebau7ec7u670du88c5u5b66u9662"};
通过jqry 获取相应的数据
$.getScript('数据接口',function(){
//新浪:remote_ip_info.country
}) 

腾讯IP分享计划的地址获取IP所在地:
http://ip.qq.com/cgi-bin/searchip?searchip1=ip

Java调用淘宝ip查询接口查询地域的一个java实例:

  1. import java.io.BufferedReader;  
  2. import java.io.DataOutputStream;  
  3. import java.io.IOException;  
  4. import java.io.InputStreamReader;  
  5. import java.io.UnsupportedEncodingException;  
  6. import java.net.HttpURLConnection;  
  7. import java.net.URL;  
  8.   
  9. public class AddressUtils   
  10.    
  11.  public String getAddresses(String content, String encodingString)  
  12.    throws UnsupportedEncodingException  
  13.   // 这里调用pconline的接口  
  14.   String urlStr "http://ip.taobao.com/service/getIpInfo.php" 
  15.   // 从http://whois.pconline.com.cn取得IP所在的省市区信息  
  16.   String returnStr this.getResult(urlStr, content, encodingString);  
  17.   if (returnStr != null 
  18.    // 处理返回的省市区信息  
  19.    System.out.println(returnStr);  
  20.    String[] temp returnStr.split(",");  
  21.    if(temp.length<</span>3){  
  22.     return "0";//无效IP,局域网测试  
  23.     
  24.    String region (temp[5].split(":"))[1].replaceAll(""""");  
  25.    region decodeUnicode(region);// 省份  
  26.     
  27.             String country "" 
  28.             String area "" 
  29.             // String region "";  
  30.             String city "" 
  31.             String county "" 
  32.             String isp "" 
  33.             for (int 0temp.length; i++)  
  34.                 switch (i)  
  35.                 case 1 
  36.                     country (temp[i].split(":"))[2].replaceAll(""""");  
  37.                     country decodeUnicode(country);// 国家  
  38.                     break 
  39.                     case 3 
  40.                         area (temp[i].split(":"))[1].replaceAll(""""");  
  41.                         area decodeUnicode(area);// 地区   
  42.                     break 
  43.                     case 5 
  44.                         region (temp[i].split(":"))[1].replaceAll(""""");  
  45.                         region decodeUnicode(region);// 省份   
  46.                     break  
  47.                     case 7 
  48.                         city (temp[i].split(":"))[1].replaceAll(""""");  
  49.                         city decodeUnicode(city);// 市区  
  50.                     break  
  51.                     case 9 
  52.                             county (temp[i].split(":"))[1].replaceAll(""""");  
  53.                             county decodeUnicode(county);// 地区   
  54.                     break 
  55.                     case 11 
  56.                         isp (temp[i].split(":"))[1].replaceAll(""""");  
  57.                         isp decodeUnicode(isp); // ISP公司  
  58.                     break 
  59.                  
  60.              
  61.      
  62.     System.out.println(country+"="+area+"="+region+"="+city+"="+county+"="+isp);  
  63.    return region;  
  64.    
  65.   return null 
  66.   
  67.    
  68.  private String getResult(String urlStr, String content, String encoding)  
  69.   URL url null 
  70.   HttpURLConnection connection null 
  71.   try  
  72.    url new URL(urlStr);  
  73.    connection (HttpURLConnection) url.openConnection();// 新建连接实例  
  74.    connection.setConnectTimeout(2000);// 设置连接超时时间,单位毫秒  
  75.    connection.setReadTimeout(2000);// 设置读取数据超时时间,单位毫秒  
  76.    connection.setDoOutput(true);// 是否打开输出流 true|false  
  77.    connection.setDoInput(true);// 是否打开输入流true|false  
  78.    connection.setRequestMethod("POST");// 提交方法POST|GET  
  79.    connection.setUseCaches(false);// 是否缓存true|false  
  80.    connection.connect();// 打开连接端口  
  81.    DataOutputStream out new DataOutputStream(connection  
  82.      .getOutputStream());// 打开输出流往对端服务器写数据  
  83.    out.writeBytes(content);// 写数据,也就是提交你的表单 name=xxx&pwd=xxx  
  84.    out.flush();// 刷新  
  85.    out.close();// 关闭输出流  
  86.    BufferedReader reader new BufferedReader(new InputStreamReader(  
  87.      connection.getInputStream(), encoding));// 往对端写完数据对端服务器返回数据  
  88.    // ,以BufferedReader流来读取  
  89.    StringBuffer buffer new StringBuffer();  
  90.    String line "" 
  91.    while ((line reader.readLine()) != null 
  92.     buffer.append(line);  
  93.     
  94.    reader.close();  
  95.    return buffer.toString();  
  96.   catch (IOException e)  
  97.    e.printStackTrace();  
  98.   finally  
  99.    if (connection != null 
  100.     connection.disconnect();// 关闭连接  
  101.     
  102.    
  103.   return null 
  104.   
  105.    
  106.  public static String decodeUnicode(String theString)  
  107.   char aChar;  
  108.   int len theString.length();  
  109.   StringBuffer outBuffer new StringBuffer(len);  
  110.   for (int 0len;)  
  111.    aChar theString.charAt(x++);  
  112.    if (aChar == '\' 
  113.     aChar theString.charAt(x++);  
  114.     if (aChar == 'u' 
  115.      int value 0 
  116.      for (int 04i++)  
  117.       aChar theString.charAt(x++);  
  118.       switch (aChar)  
  119.       case '0' 
  120.       case '1' 
  121.       case '2' 
  122.       case '3' 
  123.       case '4' 
  124.       case '5' 
  125.       case '6' 
  126.       case '7' 
  127.       case '8' 
  128.       case '9' 
  129.        value (value << 4aChar '0' 
  130.        break 
  131.       case 'a' 
  132.       case 'b' 
  133.       case 'c' 
  134.       case 'd' 
  135.       case 'e' 
  136.       case 'f' 
  137.        value (value << 410 aChar 'a' 
  138.        break 
  139.       case 'A' 
  140.       case 'B' 
  141.       case 'C' 
  142.       case 'D' 
  143.       case 'E' 
  144.       case 'F' 
  145.        value (value << 410 aChar 'A' 
  146.        break 
  147.       default 
  148.        throw new IllegalArgumentException 
  149.          "Malformed      encoding.");  
  150.        
  151.       
  152.      outBuffer.append((charvalue);  
  153.     else  
  154.      if (aChar == 't' 
  155.       aChar ' ' 
  156.      else if (aChar == 'r' 
  157.       aChar ' ' 
  158.      else if (aChar == 'n' 
  159.       aChar ' ' 
  160.      else if (aChar == 'f' 
  161.       aChar 'f' 
  162.       
  163.      outBuffer.append(aChar);  
  164.      
  165.    else  
  166.     outBuffer.append(aChar);  
  167.     
  168.    
  169.   return outBuffer.toString();  
  170.   
  171.  // 测试  
  172.  public static void main(String[] args)  
  173.   AddressUtils addressUtils new AddressUtils();  
  174.   // 测试ip 219.136.134.157 中国=华南=广东省=广州市=越秀区=电信  
  175.   String ip "125.70.11.136" 
  176.   String address "" 
  177.   try  
  178.    address addressUtils.getAddresses("ip="+ip, "utf-8");  
  179.   catch (UnsupportedEncodingException e)  
  180.    // TODO Auto-generated catch block  
  181.    e.printStackTrace();  
  182.    
  183.   System.out.println(address);  
  184.   // 输出结果为:广东省,广州市,越秀区  
  185.   
  186.   

免责声明:文章转载自《【转载】 java根据ip地址获取详细地域信息》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇整理分布式锁:业务场景&amp;amp;分布式锁家族&amp;amp;实现原理python3 + Django + Mysql + Vue + Element-UI 学习笔记:从0搭建前后端分离的测试工具平台下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

ISP与DSP的区别【转】

https://www.cnblogs.com/lifan3a/articles/5006760.html ISP是Image Signal Processor 的简称,也就是图像信号处理器。而DSP是Digital Signal Processor 的缩写,也就是数字信号处理器。 ISP一般用来处理Image Sensor(图像传感器)的输出数据,如做A...

Linux下pppoe客户端拔号--pppoe-setup

Linux下pppoe客户端拔号--pppoe-setup root@jlive:~#pppoe-setup Welcome to the PPPoE client setup.  First, I will run some checks on your system to make sure the PPPoE client is installed...