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 构造函数,公有,私有特权和静态成员定义方法
Nov 30 Javascript
基于JavaScript 下namespace 功能的简单分析
Jul 05 Javascript
jQuery插件windowScroll实现单屏滚动特效
Jul 14 Javascript
Jquery中map函数的用法
Jun 03 Javascript
原生js实现弹出层登录拖拽功能
Dec 05 Javascript
Angular 2 利用Router事件和Title实现动态页面标题的方法
Aug 23 Javascript
Vue中使用的EventBus有生命周期
Jul 12 Javascript
基于vue和react的spa进行按需加载的实现方法
Sep 29 Javascript
angular4自定义表单控件[(ngModel)]的实现
Nov 23 Javascript
laravel-admin 与 vue 结合使用实例代码详解
Jun 04 Javascript
pm2启动ssr失败的解决方法
Jun 29 Javascript
详解ES6新增字符串扩张方法includes()、startsWith()、endsWith()
May 12 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
雄兵连:第三季确定会出,不过时间未定,鹤熙是第三季的主角!
2020/03/13 国漫
php session应用实例 登录验证
2009/03/16 PHP
php操作mysqli(示例代码)
2013/10/28 PHP
thinkphp3.x中session方法的用法分析
2016/05/20 PHP
PHP使用PDO 连接与连接管理操作实例分析
2020/04/21 PHP
可以支持多中格式的JS键盘
2007/05/02 Javascript
页面中iframe相互传值传参
2009/12/13 Javascript
关于Javascript模块化和命名空间管理的问题说明
2010/12/06 Javascript
JQuery与JSon实现的无刷新分页代码
2011/09/13 Javascript
使用javascript:将其它类型值转换成布尔类型值的解决方法详解
2013/05/07 Javascript
node.js中的emitter.on方法使用说明
2014/12/10 Javascript
JavaScript获取一个范围内日期的方法
2015/04/24 Javascript
jQuery UI库中dialog对话框功能使用全解析
2016/04/23 Javascript
详解如何使用vue-cli脚手架搭建Vue.js项目
2017/05/19 Javascript
jQuery实现拼图小游戏(实例讲解)
2017/07/24 jQuery
jQuery实现的form转json经典示例
2017/10/10 jQuery
JS二分查找算法详解
2017/11/01 Javascript
Vue-cli Eslint在vscode里代码自动格式化的方法
2018/02/23 Javascript
vue中更改数组中属性,在页面中不生效的解决方法
2019/10/30 Javascript
python万年历实现代码 含运行结果
2017/05/20 Python
网红编程语言Python将纳入高考你怎么看?
2018/06/07 Python
numpy基础教程之np.linalg
2019/02/12 Python
python禁用键鼠与提权代码实例
2019/08/16 Python
python多线程并发及测试框架案例
2019/10/15 Python
Python之Class&amp;Object用法详解
2019/12/25 Python
python的help函数如何使用
2020/06/11 Python
简述索引存取方法的作用和建立索引的原则
2013/03/26 面试题
财务管理个人自荐书范文
2013/11/24 职场文书
项目专员岗位职责
2013/12/04 职场文书
社会保险接收函
2014/01/12 职场文书
婚前财产协议书范本
2014/10/19 职场文书
社区党风廉政建设调研报告
2015/01/01 职场文书
浅谈Laravel中使用Slack进行异常通知
2021/05/29 PHP
解析高可用Redis服务架构分析与搭建方案
2021/06/20 Redis
浅谈Redis中的RDB快照
2021/06/29 Redis
详解MySql中InnoDB存储引擎中的各种锁
2022/02/12 MySQL