Java通用方法 -- 通过IP地址获取地理位置

简介: 通过IP地址获取地理位置
/**
 * 获取地址类
 * 
 */
public class AddressUtils
{
    private static final Logger log = LoggerFactory.getLogger(AddressUtils.class);

    // IP地址查询
    public static final String IP_URL = "http://whois.pconline.com.cn/ipJson.jsp";

    // 未知地址
    public static final String UNKNOWN = "XX XX";

    public static String getRealAddressByIP(String ip)
    {
        String address = UNKNOWN;
        // 内网不查询
        if (IpUtils.internalIp(ip))
        {
            return "Intranet IP";
        }
        if (true)
        {
            try
            {
                String rspStr = HttpUtils.sendGet(IP_URL, "ip=" + ip + "&json=true", "GBK");
                if (StringUtils.isEmpty(rspStr))
                {
                    log.error("获取地理位置异常 {}", ip);
                    return UNKNOWN;
                }
                JSONObject obj = JSONObject.parseObject(rspStr);
                String region = obj.getString("pro");
                String city = obj.getString("city");
                return String.format("%s %s", region, city);
            }
            catch (Exception e)
            {
                log.error("获取地理位置异常 {}", e);
            }
        }
        return address;
    }
}
目录
相关文章
|
2天前
|
Java
深入了解Java中的BigDecimal类及其方法
深入了解Java中的BigDecimal类及其方法
9 1
|
2天前
|
Java 编译器
Java健壮性 Java可移植性 JDK, JRE, JVM三者关系 Java的加载与执行原理 javac编译与JAVA_HOME环境变量介绍 Java中的注释与缩进 main方法的args参数
Java健壮性 Java可移植性 JDK, JRE, JVM三者关系 Java的加载与执行原理 javac编译与JAVA_HOME环境变量介绍 Java中的注释与缩进 main方法的args参数
5 1
|
2天前
|
监控 Java
优化Java应用的日志记录方法
优化Java应用的日志记录方法
|
2天前
|
设计模式 安全 Java
在Java中实现单例模式的正确方法
在Java中实现单例模式的正确方法
|
2天前
|
Java 编译器 索引
解决Java中的NoSuchElementException异常的常见方法
解决Java中的NoSuchElementException异常的常见方法
|
2天前
|
存储 缓存 安全
Java List操作详解及常用方法
Java List操作详解及常用方法
|
2天前
|
Java 数据安全/隐私保护
Java基础手册二(类和对象 对象创建和使用 面向对象封装性 构造方法与参数传递 this关键字 static关键字 继承 多态 方法覆盖 final关键字 访问控制权限修饰符)
Java基础手册二(类和对象 对象创建和使用 面向对象封装性 构造方法与参数传递 this关键字 static关键字 继承 多态 方法覆盖 final关键字 访问控制权限修饰符)
9 0
|
网络协议 Java
Java判断IP地址类型(第二版)
1 import java.net.Inet4Address; 2 import java.net.Inet6Address; 3 import java.net.InetAddress; 4 import java.net.UnknownHostException; 5 6 /* 7 * 第一版判断Ipv4或者Ipv6是通过是通过长度来实现的(4段为Ipv4,16段是Ipv6),由于判断的是本机IP, 8 * 所以没有校验值得合法性; 9 * 后来学了正则表达式; 10 * 现在使用instanceof操作符。
1591 0
|
网络协议 Java
Java判断本机IP地址类型(第一版)
1 package net; 2 3 import java.net.*; 4 5 /* 6 * getAddress方法和getHostAddress类似,它们的唯一区别是getHostAddress方法返回的是字符串形式的IP地址, 7 * 而getAddress方法返回的是byte数组形式的IP地址。
783 0
|
1天前
|
Java 数据处理 调度
Java多线程编程入门指南
Java多线程编程入门指南