博客
关于我
oracle 翻译ip归属地/经纬度/定位;获取ip归属地/经纬度/定位;获取ip gps定位/lng,lat/坐标
阅读量:390 次
发布时间:2019-03-05

本文共 3359 字,大约阅读时间需要 11 分钟。

以下是优化后的技术文章:

Oracle数据库IP地址归属地及GPS定位解决方案

目录

  • 通过pconline获取IP地址归属地
  • 通过ip-api获取IP地址归属地
  • 通过ip-api获取GPS坐标(经纬度)

  • 一、通过pconline获取IP地址归属地

    本文使用pconline提供的IP地址归属地查询服务,通过以下SQL函数实现IP地址归属地获取:

    create function get_ip_city(ip in varchar2)    return varchar2is    city  varchar2(200);    Req   Utl_Http.Req;    Resp  Utl_Http.Resp;    Value Varchar2(13767);    Urll  Varchar2(2000);    obj   json;begin    Urll := 'http://whois.pconline.com.cn/ipJson.jsp?ip=' || ip || '&json=true';    Req := Utl_Http.Begin_Request(Urll);    UTL_HTTP.SET_HEADER(req, 'User-Agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1.2 Safari/605.1.15');    Resp := Utl_Http.Get_Response(Req);    Utl_Http.READ_TEXT(Resp, Value);    Utl_Http.End_Response(Resp);    obj := json(Value);    city := '中国-' || obj.get_string('pro') || '-' || obj.get_string('city');    return city;exception    when others then        city := '获取失败';        return city;end;

    测试查询示例:

    select get_ip_city('124.64.17.191') from dual;select get_ip_city('219.136.53.255') from dual;

    二、通过ip-api获取IP地址归属地

    使用ip-api提供的免费JSON接口,实现IP地址归属地获取:

    create function get_ip_city(ip in varchar2)    return varchar2is    city  varchar2(200);    Req   Utl_Http.Req;    Resp  Utl_Http.Resp;    Value Varchar2(13767);    Urll  Varchar2(2000);    obj   json;begin    Urll := 'http://ip-api.com/json/' || ip || '?lang=zh-CN';    Req := Utl_Http.Begin_Request(Urll);    UTL_HTTP.SET_HEADER(req, 'User-Agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1.2 Safari/605.1.15');    UTL_HTTP.SET_HEADER(req, 'Accept-Language', 'zh-cn');    UTL_HTTP.SET_HEADER(req, 'Content-Type', 'application/json; charset=utf-8');    Resp := Utl_Http.Get_Response(Req);    Utl_Http.READ_RAW(Resp, Value);    Value := Utl_Raw.CAST_TO_VARCHAR2(Value);    Utl_Http.End_Response(Resp);    obj := json(Value);    city := obj.get_string('country') || '-' || obj.get_string('regionName') || '-' || obj.get_string('city');    return city;exception    when others then        city := '获取失败';        return city;end;

    测试查询示例:

    select get_ip_city('124.64.17.191') from dual;select get_ip_city('219.136.53.255') from dual;

    三、通过ip-api获取GPS坐标(经纬度)

    通过ip-api获取IP地址的GPS坐标(经纬度),适用于需要定位服务的场景:

    create function get_ip_gps(ip in varchar2)    return varchar2is    city  varchar2(200);    Req   Utl_Http.Req;    Resp  Utl_Http.Resp;    Value Varchar2(13767);    Urll  Varchar2(2000);    obj   json;begin    Urll := 'http://ip-api.com/json/' || ip || '?lang=zh-CN';    Req := Utl_Http.Begin_Request(Urll);    UTL_HTTP.SET_HEADER(req, 'User-Agent', 'Mozilla/5.0 (Macintosh; Intel Mac OS X 10_12_6) AppleWebKit/605.1.15 (KHTML, like Gecko) Version/12.1.2 Safari/605.1.15');    UTL_HTTP.SET_HEADER(req, 'Accept-Language', 'zh-cn');    UTL_HTTP.SET_HEADER(req, 'Content-Type', 'application/json; charset=utf-8');    Resp := Utl_Http.Get_Response(Req);    Utl_Http.READ_RAW(Resp, Value);    Value := Utl_Raw.CAST_TO_VARCHAR2(Value);    Utl_Http.End_Response(Resp);    obj := json(Value);    city := obj.get_number('lon') || ',' || obj.get_number('lat');    return city;exception    when others then        city := '获取失败';        return city;end;

    测试查询示例:

    select get_ip_gps('124.64.17.191') from dual;select get_ip_gps('219.136.53.255') from dual;

    以上功能可根据实际需求进行扩展或调整,建议结合具体业务场景选择合适的IP地址归属地获取方式。

    转载地址:http://tudzz.baihongyu.com/

    你可能感兴趣的文章
    上周热点回顾(3.26-4.1)
    查看>>
    故障公告:IIS应用程序池停止工作造成博客站点无法访问
    查看>>
    【故障公告】极验验证码故障造成无法登录与注册
    查看>>
    上周热点回顾(6.25-7.1)
    查看>>
    【故障公告】10:30-10:45 左右 docker swarm 集群节点问题引发故障
    查看>>
    工作半年的思考
    查看>>
    不可思议的纯 CSS 滚动进度条效果
    查看>>
    【CSS进阶】伪元素的妙用--单标签之美
    查看>>
    开始CN的生活
    查看>>
    惊闻NBC在奥运后放弃使用Silverlight
    查看>>
    IE下尚未实现错误的原因
    查看>>
    Kubernetes 学习系列文章
    查看>>
    创建自己的Docker基础镜像
    查看>>
    使用Jenkins来实现内部的持续集成流程(上)
    查看>>
    HTTP 协议图解
    查看>>
    Python 简明教程 --- 20,Python 类中的属性与方法
    查看>>
    Python 简明教程 --- 21,Python 继承与多态
    查看>>
    KNN 算法-理论篇-如何给电影进行分类
    查看>>
    Spring Cloud第九篇 | 分布式服务跟踪Sleuth
    查看>>
    CODING 敏捷实战系列课第三讲:可视化业务分析
    查看>>