`

通过IP地址获取地理位置

    博客分类:
  • Java
 
阅读更多
http://my.oschina.net/githubhty/blog/662958


<dependency>
            <groupId>org.json</groupId>
            <artifactId>json</artifactId>
            <version>20160212</version>
        </dependency>



package com.jmsht.util;
 
import java.io.BufferedReader;  
import java.io.DataOutputStream;  
import java.io.InputStreamReader;  
import java.net.HttpURLConnection;  
import java.net.URL;  
   
import org.json.JSONObject;  
   
/**
 * 根据IP地址获取地理位置
 * @author Administrator
 *
 */
public class AddressUtils {  
   
       
       
    /** 
     * @param args 
     */  
    public static void main(String[] args) {  
           
        AddressUtils addressUtils = new AddressUtils();  
           
          String ip = "183.16.7.126";  
             
          String address = "";  
             
          try {  
                 
          address = addressUtils.getAddress("ip="+ip, "utf-8");  
              
          } catch (Exception e) {  
                 
              e.printStackTrace();  
          }  
             
          System.out.println(address);  
             
   
    }  
    /** 
     * 获取地址 
     * @param params 
     * @param encoding 
     * @return 
     * @throws Exception 
     */  
    public static String getAddress(String params, String encoding) throws Exception{  
           
        String path = "http://ip.taobao.com/service/getIpInfo.php";  
           
        String returnStr = getRs(path, params, encoding);  
           
        JSONObject json=null;  
           
        if(returnStr != null){  
               
            json = new JSONObject(returnStr);  
               
            if("0".equals(json.get("code").toString())){  
                   
                StringBuffer buffer = new StringBuffer();  
                   
//                buffer.append(decodeUnicode(json.optJSONObject("data").getString("country")));//国家  
                   
//                buffer.append(decodeUnicode(json.optJSONObject("data").getString("area")));//地区  
                   
                buffer.append(decodeUnicode(json.optJSONObject("data").getString("region")));//省份  
                   
                buffer.append(decodeUnicode(json.optJSONObject("data").getString("city")));//市区  
                   
//                buffer.append(decodeUnicode(json.optJSONObject("data").getString("county")));//地区  
                   
//                buffer.append(decodeUnicode(json.optJSONObject("data").getString("isp")));//ISP公司  
                   
                System.out.println(buffer.toString());  
                   
                return buffer.toString();  
                   
            }else{  
                   
                return "获取地址失败";  
                   
            }  
               
        }  
           
        return null;  
           
    }  
    /** 
     * 从url获取结果 
     * @param path 
     * @param params 
     * @param encoding 
     * @return 
     */  
    public static String getRs(String path, String params, String encoding){  
           
        URL url = null;  
           
        HttpURLConnection connection = null;  
               
        try {  
               
            url = new URL(path);  
                   
            connection = (HttpURLConnection)url.openConnection();// 新建连接实例  
                   
            connection.setConnectTimeout(2000);// 设置连接超时时间,单位毫秒?  
               
            connection.setReadTimeout(2000);// 设置读取数据超时时间,单位毫秒?  
               
            connection.setDoInput(true);// 是否打开输出流? true|false  
               
            connection.setDoOutput(true);// 是否打开输入流true|false  
               
            connection.setRequestMethod("POST");// 提交方法POST|GET  
               
            connection.setUseCaches(false);// 是否缓存true|false  
               
            connection.connect();// 打开连接端口  
               
            DataOutputStream out = new DataOutputStream(connection.getOutputStream());  
               
            out.writeBytes(params);  
               
            out.flush();  
               
            out.close();  
               
            BufferedReader reader = new BufferedReader(new InputStreamReader(connection.getInputStream(),encoding));  
               
            StringBuffer buffer = new StringBuffer();  
               
            String line = "";  
               
            while ((line = reader.readLine())!= null) {  
                   
                buffer.append(line);  
                   
            }  
               
            reader.close();  
               
            return buffer.toString();  
               
        } catch (Exception e) {  
               
            e.printStackTrace();  
               
        }finally{  
               
            connection.disconnect();// 关闭连接  
               
        }  
           
        return null;  
    }  
    /** 
     * 字符转码 
     * @param theString 
     * @return 
     */  
    public static String decodeUnicode(String theString){  
           
        char aChar;  
           
        int len = theString.length();  
           
        StringBuffer buffer = new StringBuffer(len);  
           
        for (int i = 0; i < len;) {  
               
            aChar = theString.charAt(i++);  
               
            if(aChar == '\\'){  
                   
                aChar = theString.charAt(i++);  
               
                if(aChar == 'u'){  
                       
                    int val = 0;  
                       
                    for(int j = 0; j < 4; j++){  
                           
                        aChar = theString.charAt(i++);  
                           
                        switch (aChar) {  
                           
                        case '0':  
                               
                        case '1':  
                               
                        case '2':  
                               
                        case '3':  
                               
                        case '4':  
                           
                        case '5':  
                               
                        case '6':  
                           
                        case '7':  
                               
                        case '8':  
                               
                        case '9':  
                               
                        val = (val << 4) + aChar - '0';  
                           
                        break;  
       
                        case 'a':  
                               
                        case 'b':  
                               
                        case 'c':  
                               
                        case 'd':  
                               
                        case 'e':  
                               
                        case 'f':  
                               
                        val = (val << 4) + 10 + aChar - 'a';  
                                  
                        break;  
                           
                        case 'A':  
                               
                        case 'B':  
                               
                        case 'C':  
                               
                        case 'D':  
                               
                        case 'E':  
                               
                        case 'F':  
                             
                        val = (val << 4) + 10 + aChar - 'A';  
                                  
                        break;  
                                  
                        default:  
                           
                        throw new IllegalArgumentException(  
                                
                            "Malformed      encoding.");  
                        }  
                           
                    }  
                       
                    buffer.append((char) val);  
                       
                    }else{  
                           
                        if(aChar == 't'){  
                               
                            aChar = '\t';  
                        }  
                           
                        if(aChar == 'r'){  
                               
                            aChar = '\r';  
                        }  
                           
                        if(aChar == 'n'){  
                               
                            aChar = '\n';  
                        }  
                           
                        if(aChar == 'f'){  
                               
                            aChar = '\f';  
                               
                        }  
                           
                        buffer.append(aChar);  
                    }  
                   
                }else{  
                       
                    buffer.append(aChar);  
                       
                }  
                   
            }  
           
        return buffer.toString();  
           
    }  
   
}
分享到:
评论

相关推荐

    java实现根据ip地址获取地理位置的代码分享

    本篇文章将分享一个利用Java实现根据IP地址获取地理位置的简单示例,主要使用了QQ在线接口,同时提到了其他如新浪、淘宝等提供的接口作为替代选项。 首先,我们来看一下核心的Java代码。这段代码定义了一个`...

    Thinkphp5根据IP地址获取定位地理位置,精准到城市

    在IT行业中,尤其是在...综上所述,ThinkPHP5结合离线IP库可以高效地实现根据IP地址获取地理位置的功能,尤其适用于对查询速度有要求的场景。开发者只需要正确地整合和使用IP数据库,就能为用户提供更加个性化的服务。

    java实现根据ip地址获取地理位置

    在Java编程中,根据IP地址获取地理位置是一项常见的需求,尤其在大数据分析、用户行为追踪或者安全防护等场景中。本文将介绍如何利用新浪和淘宝的API接口来实现这一功能。 首先,我们来看新浪的接口实现。新浪提供...

    根据ip地址获取城市地理位置

    1、location.html 在浏览器中打开页面,即可获取您当前的ip地址,和所在城市,以及城市地理位置编码。(以国家统计局为准) 2、Location.java 运行代码,即可 获取 location.html 中的信息。 放在web项目中,可...

    基于ASP的通过ip获取所在地理位置.zip

    在ASP技术中,可以通过调用各种组件和服务来实现特定功能,例如通过IP地址获取地理位置信息。这个“基于ASP的通过ip获取所在地理位置.zip”文件很可能是包含了一个或多个ASP源代码文件,用于演示或实现如何利用ASP来...

    asp通过ip获取所在地理位置

    asp通过ip获取所在地理位置 将用代码如 index.asp 中代码 &lt;!--#include file="getip.asp"--&gt; &lt;%=ip%&gt; &lt;%=ip2%&gt; --------------------------------------------------------------------------------------...

    根据IP地址获取地理信息 地理信息

    在IT行业中,根据IP地址获取地理信息是一项常用的技术,它主要涉及到网络通信、数据库查询以及数据分析等多个领域。这项技术能够帮助我们了解网络用户的位置信息,从而实现诸如网站个性化推荐、广告定向投放、网络...

    通过IP获取地理位置

    "通过IP获取地理位置"就是一种常见的方法,它涉及到网络协议、数据库技术和地理编码等多个知识点。 首先,我们需要理解IP地址的工作原理。IP(Internet Protocol)地址是互联网上的每个设备的唯一标识,分为IPv4和...

    通过淘宝IP接口获取IP地理位置

    - **IP地理位置**:指通过特定技术手段根据用户的IP地址推断出其所在的大致地理位置信息,包括国家、地区、城市、ISP等。 - **淘宝IP接口**:淘宝提供的一项免费服务,允许开发者通过HTTP请求的方式查询指定IP地址...

    ThinkPHP根据获取的ip获取地理位置信息

    在IT行业中,尤其是在Web开发领域,常常需要获取用户设备的IP地址,并进一步通过这个IP来获取用户的地理位置信息。ThinkPHP是一个流行的PHP框架,它提供了一系列的功能来帮助开发者处理这类问题。本篇文章将深入探讨...

    IP获取地理位置asp

    本项目"IP获取地理位置asp"是基于ASP(Active Server Pages)和Access数据库技术实现的,它允许开发者通过用户的IP地址获取其大概的物理位置信息。在网页应用中,这种功能常用于提供个性化服务、安全验证、数据分析...

    qt根据ip地址得到地理位置

    QT使用http get的方式得到指定的IP地址地理位置信息http://ip.taobao.com/service/getIpInfo.php?ip=[需要查询的IP],如输入IP192.168.1.1,得到地理位置为中国广东电信

    获取IP地址和地理位置

    IP地址主要用来路由网络数据包,而地理位置信息则通常通过IP地址的解析来获取,因为ISP(Internet Service Provider)会分配给用户特定地区的IP地址。 腾讯的IP地理位置API可能涉及到以下技术点: 1. **HTTP请求**...

    php获取访客IP和地理位置信息的类

    3. 类文件`IpLocation.class.php`:这是一个PHP类,可能包含了获取和解析IP地址的函数,如`getIp()`用于获取IP,`getLocation()`用于根据IP获取地理位置信息。类的结构可能会包括构造函数、私有方法以及公开的方法...

    通过ip获取所在地理位置程序

    『字段说明』 ip 是完全的ip 如:210.42.159.168 ip2 用ASP将IP地址最后一段的数字替换成*** 如:210.42.159.*** dlwz 获取ip的地理位置 如:湖北省武汉市中南民族大学

    ASP利用纯真IP数据库获取IP地理位置

    在ASP中,我们可以通过编写脚本来解析和查询纯真IP数据库,从而获取特定IP地址的地理位置信息。在提供的文件列表中,`cz.asp`和`getIP.asp`很可能是实现这一功能的ASP源代码。这些文件可能包含了读取`cz.Dat`(纯真...

    IP地理位置查询系统

    IP地理位置查询系统是一种技术,它允许用户通过输入一个IP地址来获取与该IP相关的地理位置信息。这个系统在互联网上有着广泛的应用,包括但不限于网络安全、数据分析、广告定向、内容过滤、欺诈检测以及用户行为分析...

    .net通过ip获取所在地理位置 v1.0.rar

    标题中的".net通过ip获取所在地理位置 v1.0"指的是一个.NET框架开发的软件模块,其功能是根据输入的IP地址来确定该IP对应的位置信息。这个版本为1.0,意味着可能是该软件的第一个正式发布版。在描述中提到,它使用了...

    根据IP地址获取经纬度

    标题中的“根据IP地址获取经纬度”是指在Java编程环境下,通过特定的库或API来实现从IP地址解析出地理位置的经纬度坐标。这通常涉及到网络编程和地理信息系统(GIS)的技术。描述中提到的Java工程是实现这个功能的一...

    IP 地理位置(物理位置)查询 包含网站

    标题中的“IP 地理位置(物理位置)查询 包含网站”指的是一个软件或程序,它能够查询并显示互联网...对于开发者来说,理解IP地址与地理位置之间的关联,以及如何通过编程手段获取这些信息,是这个项目的关键技能要求。

Global site tag (gtag.js) - Google Analytics