本主题由 kevin.luo.sl 于2008-11-18 11:06:00 执行移动主题 (
查看更多)
Adobe Flex迷你教程 --Super easy获取ip所在城市
看了Moon和Grubby两场比赛。看的很爽,写点有意思的,用javascript可以获取本地ip,这个我就先不说了,我说说怎么能通过ip获取城市,能获取城市的话用处就比较大了,比如......
现在说正题。获取城市最大的问题是ip对应城市数据库,我们自己建这个数据库的话太麻烦。杂办呢,网上有很多可以根据ip查城市的网站,我们就用他们。首先找一个速度比较快的ip地址查询网站。我找的是 www.ipxxx.com(大家在源代码看吧,写出来成做广告了)。接下来确定三步
1. 看网站的结果是怎么得到的,经过观察发现上述网站是通过get查询,那就好办了。
2. 看看结果页面,因为网站不会给我们提供数据源的,所以我们要从结果页面找到我们想要的东西。上述网站的结果页面很干净,过滤很方便。
3. 确定它的首页没有版权信息说不准从外部直接访问某某页面。
OK,接下来就可以开始通过这个网站获取城市了,非常简单,不到10行代码。
1.创建一个到目标网站的HTTPService。
2.处理结果页面。//结果是一个完整的HTML页面,我们从中找到需要的部分
private function resultHandle(e:ResultEvent):void{
var contnet:String = e.result.toString()
var begIndex:int = contnet.indexOf("省")
var endIndex:int = contnet.indexOf(" ",begIndex)
if(begIndex <0){
begIndex = contnet.indexOf("主数据:")
endIndex = contnet.indexOf(" ",begIndex)
contnet = contnet.substring(begIndex 4,endIndex)
}else{
contnet = contnet.substring(begIndex 1,endIndex)
}
this.result.text ="结果是:" contnet;
}OK,这样很节约我们的资源吧,不过这种方法有可能会涉及到版权问题,大家在尝试别的网站的时候要注意

不过这样会有安全沙箱问题,毕竟那些网站不会有跨域设置,所以这是一个思路,可以用相同的道理写php的代码,flex只管取结果就好了。
原文: http://www.flextheworld.com/?p=23