调用新浪接口,获取电脑ip,所在省份城市

  之前找到了调用腾讯接口的实现方式,

  [php] http://blog.csdn.net/a7758521haha/archive/2011/05/11/6411620.aspx

  [javascript] http://blog.csdn.net/a7758521haha/archive/2011/05/09/6406287.aspx

  试着写了下调用新浪接口获取地理位置信息方式,错误百出,现在写这篇文章,把我的编码思想,遇到的问题,以及解决办法整理总结如下:

  首先打开新浪的接口http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js

  是一个数组,有类似/u4e2d/u56fd这样的内容,我想到了 利用PHP实现腾讯接口调用的方法,剥离分解数组,和iconv函数转换编码,然后就去做了,写出的代码如下所示:

 

  显示结果为:country : /u4e2d/u56fd

  未得到中文显示,然后检查代码无果,一句一句返回结果也没有获知原因,于是在论坛发帖求助,得到很多各种各样的解答,(ps:csdn论坛真是高手入云,卧虎藏龙),

  首先得到的建议就是使用htmlencode,我在网上搜了一下相关文章,得到的结论如下:
  1.有些文章是介绍js实现乱码转换是通过jsp实现的,我对jsp不了解
  2.js实现乱码转换是ajax部分,跟现在的这部分我太相关

  然后回帖交流,未得到回复,所以这种方法,目前来说不可用。

  然后就有网友纠正我的概念,/u4e2d/u56fd之类的内容不是乱码而是转码,所以用iconv无理由,而我就是这个意思(表达为乱码是因为之前看过的一篇文章上是这样说的),按照我的理解iconv函数是实现转码的,他说这是汉字的unicode值,然后百度谷歌了一番,找到很多相关文章,正在看,就得到回帖,之后的回帖给出了一些写好的代码,

 

  给出了一个新思路:使用jquery这种纯前端方式实现,我对jquery没有了解,所以没能深究,不过这代码可以在ie8下正常得到想要的结果,显示如下:

  1 60.7.0.0 60.7.255.255 中国 河北 秦皇岛 联通

  还得到下面的代码:

    仅仅显示的话:

   

  这段代码执行显示结果为:中国,正常显示

    还要二次处理的话:

   

  执行结果为:你在中国,显示正常。

  还有两段代码:

 

  弹出对话框,内容为“中国”,显示正常

  还有一种方式,如下代码:

  显示如下代码:stdClass Object ( [ret] => 1 [start] => 60.7.0.0 [end] => 60.7.255.255 [country] => 中国 [province] => 河北 [city] => 秦皇岛 [district] => [isp] => 联通 [type] => [desc] => )

 

  以下是我的分析:

  其实一开始我的设计思想就是错误的,var remote_ip_info = {"ret":1,"start":"60.7.0.0","end":"60.7.255.255","country":"/u4e2d/u56fd","province":"/u6cb3/u5317","city":"/u79e6/u7687/u5c9b","district":"","isp":"/u8054/u901a","type":"","desc":""};本身内容就是js形式(这一点从url里面format=js就可以看到),据此第三段代码和第五段代码很容易得出

  接下来我得再看下正则表达式部分

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值