
oracle 翻译ip归属地/经纬度/定位;获取ip归属地/经纬度/定位;获取ip gps定位/lng,lat/坐标
通过pconline获取IP地址归属地 通过ip-api获取IP地址归属地 通过ip-api获取GPS坐标(经纬度)
发布日期:2021-05-08 18:38:40
浏览次数:15
分类:精选文章
本文共 3359 字,大约阅读时间需要 11 分钟。
以下是优化后的技术文章:
Oracle数据库IP地址归属地及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地址归属地获取方式。
发表评论
最新留言
路过,博主的博客真漂亮。。
[***.116.15.85]2025年03月21日 13时28分17秒
关于作者

喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
PCB布局系列汇总
2019-03-05
“/”应用程序中的服务器错误。
2019-03-05
MUI之ajax获取后台接口数据
2019-03-05
使用sqlserver 查询不连续的数据
2019-03-05
用div+css+html+js 实现图片放大
2019-03-05
(原创)在Linux上安装运行Python3(CentOS7为例)
2019-03-05
weblogic之cve-2015-4852
2019-03-05
Java注释
2019-03-05
水调歌头·1024
2019-03-05
C++ 函数重载
2019-03-05
Nginx简介
2019-03-05
Nginx的Gzip功能
2019-03-05
Azure Storage 系列(四)在.Net 上使用Table Storage
2019-03-05
abstract关键字的使用
2019-03-05
.NET微信网页开发之使用微信JS-SDK调用微信扫一扫功能
2019-03-05
解决Spirng注入时名称下的红色波浪线
2019-03-05
使用mybatis-generator生成底层
2019-03-05
Android APK 重签名
2019-03-05