java实现根据ip定位地理位置(调用百度接口)

1543年前SpringBoot845

这里用的是若依的springboot框架,框架里自带的获取地理位置接口是调用的淘宝的,已经不可用。于是找到哦百度接口实现。

调用百度接口:

http://api.map.baidu.com/location/ip?ak=您的AK&ip=您的IP&coor=bd09ll
ak需要到百度开放平台自己创建应用申请。
public class AddressUtils
{
    private static final Logger log = LoggerFactory.getLogger(AddressUtils.class);
    public static final String IP_URL = "http://api.map.baidu.com/location/ip?ak=xQ3jYoPgpIsGxFZ8vtWGbtsY07**8&coor=bd09ll";
    public static String getRealAddressByIP(String ip)
    {
        String address = "XX XX";
        // 内网不查询
        if (IpUtils.internalIp(ip))
        {
            return "内网IP";
        }
        String rspStr = HttpUtils.sendPost(IP_URL, "ip=" + ip);
        if (StringUtils.isEmpty(rspStr))
        {
            log.error("获取地理位置异常 {}", ip);
            return address;
        }
        JSONObject obj;
        try
        {
            obj = JSON.unmarshal(rspStr, JSONObject.class);
            JSONObject content = obj.getObj("content");
//                JSONObject address_detail = content.getObj("address_detail");
            String addresses = content.getStr("address");
            address = addresses ;
        }
        catch (Exception e)
        {
            log.error("获取地理位置异常 {}", ip);
        }
        return address;
    }
    public static void main(String[] args) {
        System.out.println(getRealAddressByIP("61.158.148.101"));
    }
 }


相关文章

get方式调用http接口   Header赋参数值

get方式调用http接口 Header赋参数值

   /**      195.     * 发送...

UUID 生成方法

import java.util.UUID;/**     * UUID 生成方法     * @return uuid &nbs...

MyEclipse 8.5 新建 基于Xfire的webservice

MyEclipse 8.5 新建 基于Xfire的webservice

 使用Xfire实现Web Services,作业应当包括相关的实现软件代码以及对应的WSDL。 MyEclipse 8.5,XFire 1.2.6,weblogic 11g/TomcatX...

org.tigris.subversion.javahl.ClientException:Attempted to lock an already-lo

 svn更新或提交是报错:org.tigris.subversion.javahl.ClientException:Attempted to lock an already-locked d...

idea 如何运行vue项目

idea 如何运行vue项目

这里以RuoYi-Vue项目为例,开源地址1.环境准备JDK >= 1.8 (推荐1.8版本) Mysql >= 5.7.0 ...

base64加密java算法

base64加密java算法

 一、Base64算法概述Base64算法最早应用于解决电子邮件传输的问题。它是一种基于64个字符的编码算法,根据RFC 2045的定义:“Base64内容传输编码是一种以任意8位字节序列组...

发表评论    

◎欢迎参与讨论,请在这里发表您的看法、交流您的观点。