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 toFixed() 方法
Apr 15 Javascript
说明你的Javascript技术很烂的五个原因
Apr 26 Javascript
js 手机号码合法性验证代码集合
Sep 29 Javascript
js 高效去除数组重复元素示例代码
Dec 19 Javascript
AngularJS equal比较对象实例详解
Sep 14 Javascript
vue.js初学入门教程(1)
Nov 03 Javascript
从vue基础开始创建一个简单的增删改查的实例代码(推荐)
Feb 11 Javascript
详解Javascript中new()到底做了些什么?
Mar 29 Javascript
在Create React App中使用CSS Modules的方法示例
Jan 15 Javascript
小程序页面动态配置实现方法
Feb 05 Javascript
vue绑定数字类型 value为数字的实例
Aug 31 Javascript
微信小程序自定义tabBar的踩坑实践记录
Nov 06 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
索尼SONY SRF-S83/84电路分析和打磨
2021/03/02 无线电
深入理解PHP中的Streams工具
2015/07/03 PHP
PHP时间类完整代码实例
2021/02/26 PHP
利用js获取服务器时间的两个简单方法
2010/01/08 Javascript
JavaScript 设计模式之组合模式解析
2010/04/09 Javascript
AlertBox 弹出层信息提示框效果实现步骤
2010/10/11 Javascript
node.js中的http.request方法使用说明
2014/12/14 Javascript
基于JavaScript实现右键菜单和拖拽功能
2016/11/28 Javascript
简单实现js放大镜效果
2017/07/24 Javascript
Angular6中使用Swiper的方法示例
2018/07/09 Javascript
vue-router 手势滑动触发返回功能
2018/09/30 Javascript
在element-ui的select下拉框加上滚动加载
2019/04/18 Javascript
微信小程序引入模块中wxml、wxss、js的方法示例
2019/08/09 Javascript
react实现同页面三级跳转路由布局
2019/09/26 Javascript
Python2.x版本中基本的中文编码问题解决
2015/10/12 Python
浅谈flask源码之请求过程
2018/07/26 Python
python数据结构之线性表的顺序存储结构
2018/09/28 Python
python使用Plotly绘图工具绘制气泡图
2019/04/01 Python
Python 控制终端输出文字的实例
2019/07/12 Python
Django获取该数据的上一条和下一条方法
2019/08/12 Python
Python 实例方法、类方法、静态方法的区别与作用
2019/08/14 Python
Python类中的装饰器在当前类中的声明与调用详解
2020/04/15 Python
Python Scrapy多页数据爬取实现过程解析
2020/06/12 Python
手把手教你如何用Pycharm2020.1.1配置远程连接的详细步骤
2020/08/07 Python
神经网络训练采用gpu设置的方式
2021/03/03 Python
详解如何使用rem或viewport进行移动端适配
2020/08/14 HTML / CSS
丝芙兰巴西官方商城:SEPHORA巴西
2016/10/31 全球购物
一百多行代码实现react拖拽hooks
2021/03/23 Javascript
厨房工作人员岗位职责
2013/11/15 职场文书
国贸专业大学生职业生涯规划范文
2014/01/10 职场文书
《海伦?凯勒》教学反思
2014/04/17 职场文书
CSS+HTML 实现顶部导航栏功能
2021/08/30 HTML / CSS
vue route新窗口跳转页面并且携带与接收参数
2022/04/10 Vue.js
MySQL分区以及建索引的方法总结
2022/04/13 MySQL
win10如何快速切换窗口 win10切换窗口快捷键分享
2022/07/23 数码科技
教你使用RustDesk 搭建一个自己的远程桌面中继服务器
2022/08/14 Servers