Node.js和PHP根据ip获取地理位置的方法


Posted in Javascript onMarch 14, 2014

一、Node.js实现代码

var http = require('http');
var util = require('util');/**
 * 根据 ip 获取获取地址信息
 */
var getIpInfo = function(ip, cb) {
    var sina_server = 'http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=';
    var url = sina_server + ip;
    http.get(url, function(res) {
        var code = res.statusCode;
        if (code == 200) {
            res.on('data', function(data) {
                try {
                    cb(null, JSON.parse(data));
                } catch (err) {
                    cb(err);
                }
            });
        } else {
            cb({ code: code });
        }
    }).on('error', function(e) { cb(e); });
};
getIpInfo('220.181.111.85', function(err, msg) {
    console.log('城市: ' + msg.city);
    console.log('msg: ' + util.inspect(msg, true, 8));
})

请求结果:
城市: 徐州
{
    "ret": 1,
    "start": "49.68.0.0",
    "end": "49.68.255.255",
    "country": "中国",
    "province": "江苏",
    "city": "徐州",
    "district": "",
    "isp": "电信",
    "type": "",
    "desc": ""
}

二、PHP实现代码
<?$ip = "220.181.111.85";
$url = "http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=json&ip=$ip";
$data = file_get_contents($url);
$result = json_decode($data);
echo "城市:" . $result->city . "<br>";
print_r($result);
?>

请求结果:
城市:徐州
stdClass Object
(
    [ret] => 1
    [start] => 49.68.0.0
    [end] => 49.68.255.255
    [country] => 中国
    [province] => 江苏
    [city] => 徐州
    [district] => 
    [isp] => 电信
    [type] => 
    [desc] =>
)

Javascript 相关文章推荐
javascript动态加载三
Aug 22 Javascript
JS链式调用的实现方法
Mar 07 Javascript
JS命名空间的另一种实现
Aug 09 Javascript
jquery插件NProgress.js制作网页加载进度条
Jun 05 Javascript
jQuery自定义动画函数实例详解(附demo源码)
Dec 10 Javascript
JSON与XML的区别对比及案例应用
Nov 11 Javascript
vue快捷键与基础指令详解
Jun 01 Javascript
[js高手之路]原型式继承与寄生式继承详解
Aug 28 Javascript
JS实现的视频弹幕效果示例
Aug 17 Javascript
vue中get请求如何传递数组参数的方法示例
Nov 08 Javascript
vue仿淘宝滑动验证码功能(样式模仿)
Dec 10 Javascript
vue-router 按需加载 component: () =&gt; import() 报错的解决
Sep 22 Javascript
弹出窗口并且此窗口带有半透明的遮罩层效果
Mar 13 #Javascript
javascript回车完美实现tab切换功能
Mar 13 #Javascript
javasciprt下jquery函数$.post执行无响应的解决方法
Mar 13 #Javascript
JQuery中extend使用介绍
Mar 13 #Javascript
js中用window.open()打开多个窗口的name问题
Mar 13 #Javascript
javascript获取浏览器类型和版本的方法(js获取浏览器版本)
Mar 13 #Javascript
利用try-catch判断变量是已声明未声明还是未赋值
Mar 12 #Javascript
You might like
ThinkPHP整合百度Ueditor图文教程
2014/10/21 PHP
PHP+MYSQL实现用户的增删改查
2015/03/24 PHP
PHP文件操作方法汇总
2015/07/01 PHP
PHP中set error handler函数用法小结
2015/11/11 PHP
统一接口:为FireFox添加IE的方法和属性的js代码
2007/03/25 Javascript
javascript下对于事件、事件流、事件触发的顺序随便说说
2010/07/17 Javascript
jquery实现textarea 高度自适应
2015/03/11 Javascript
javascript的BOM汇总
2015/07/16 Javascript
jQuery实现下拉框选择图片功能实例
2015/08/08 Javascript
js关于getImageData跨域问题的解决方法
2016/10/14 Javascript
JS二叉树的简单实现方法示例
2017/04/05 Javascript
AngularJS之ionic 框架下实现 Localstorage本地存储
2017/04/22 Javascript
使用webpack3.0配置webpack-dev-server教程
2018/05/29 Javascript
解决Vue2.0 watch对象属性变化监听不到的问题
2018/09/11 Javascript
小程序实现左右来回滚动字幕效果
2018/12/28 Javascript
JS+canvas画布实现炫酷的旋转星空效果示例
2019/02/13 Javascript
使用layui日期控件laydate对开始和结束时间进行联动控制的方法
2019/09/06 Javascript
antd配置config-overrides.js文件的操作
2020/10/31 Javascript
[03:08]Ti4观战指南上
2014/07/07 DOTA
Python实现简单的代理服务器
2015/07/25 Python
Eclipse和PyDev搭建完美Python开发环境教程(Windows篇)
2016/11/16 Python
使用Python中的tkinter模块作图的方法
2017/02/07 Python
Python绘图Matplotlib之坐标轴及刻度总结
2019/06/28 Python
python 求定积分和不定积分示例
2019/11/20 Python
python小程序之4名牌手洗牌发牌问题解析
2020/05/15 Python
pycharm 关掉syntax检查操作
2020/06/09 Python
python实现二分查找算法
2020/09/18 Python
CSS3 box-shadow属性实例详解
2020/06/19 HTML / CSS
英国运动风奢侈品购物网站:Maison De Fashion
2020/08/28 全球购物
学生思想表现的评语
2014/01/30 职场文书
委托公证书范本
2014/04/03 职场文书
品酒会策划方案
2014/05/26 职场文书
知识就是力量演讲稿
2014/09/13 职场文书
自荐信格式范文
2015/03/04 职场文书
2015年办公室文秘工作总结
2015/04/30 职场文书
Nginx性能优化之Gzip压缩设置详解(最大程度提高页面打开速度)
2022/02/12 Servers