当前位置:  编程技术>.net/c#/asp.net

使用淘宝ip地址库查ip的示例

    来源: 互联网  发布时间:2014-10-30

    本文导语:  使用淘宝ip地址库的api查询ip地址信息。 TaobaoIPHelper.cs 代码如下:using System;using System.Collections.Generic;using System.Linq;using System.Text; namespace LixinCommon{    ///     /// 淘宝IP地址库帮助类。    /// 提供查询ip地址信息功能。   ...

使用淘宝ip地址库的api查询ip地址信息。

TaobaoIPHelper.cs

代码如下:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

namespace LixinCommon
{
    ///
    /// 淘宝IP地址库帮助类。
    /// 提供查询ip地址信息功能。
    /// 服务的主页:http://ip.taobao.com
    /// 作者:lixin
    /// 作者Email:lixin@lixin.me
    /// 日期:2014年3月30日
    /// 备注:为了保障服务正常运行,每个用户的访问频率需小于10qps。
    ///
    public class TaobaoIPHelper
    {
        ///
        /// 查询ip信息
        ///
        ///
        ///
        public static TaobaoIP GetIP(string ip)
        {
            System.Net.WebClient client = new System.Net.WebClient();
            try
            {
                string data = client.DownloadString("http://ip.taobao.com/service/getIpInfo.php?ip=" + ip);
                //当code==1时,表示失败
                if (data.IndexOf(""code":1") > -1)
                {
                    return new TaobaoIP()
                    {
                        code = 1,
                        errorMsg = data
                    };
                }
                using (System.IO.MemoryStream mm = new System.IO.MemoryStream(Encoding.UTF8.GetBytes(data)))
                {
                    System.Runtime.Serialization.Json.DataContractJsonSerializer myJson = new System.Runtime.Serialization.Json.DataContractJsonSerializer(typeof(TaobaoIP));
                    TaobaoIP item = (TaobaoIP)myJson.ReadObject(mm);

                    return item;
                }
            }
            catch (Exception ex)
            {
                return new TaobaoIP()
                {
                    code = 1,
                    errorMsg = ex.Message,
                    data = new TaobaoIP_Data() { }
                };
            }
        }
        ///
        /// 根据域名返回域名的ip信息
        ///
        ///
        ///
        public static TaobaoIP[] GetDomain(string domain)
        {
            System.Net.IPAddress[] ips = System.Net.Dns.GetHostAddresses(domain);
            TaobaoIP[] result = new TaobaoIP[ips.Length];
            for (int i = 0, j = ips.Length; i < j; i++)
            {
                result[i] = GetIP(ips[i].ToString());
            }
            return result;
        }
    }
    public struct TaobaoIP
    {
        ///
        /// 0:成功;1:失败
        ///
        public int code;
        ///
        /// ip响应信息
        ///
        public TaobaoIP_Data data;
        ///
        /// 错误信息
        ///
        [NonSerialized]
        public string errorMsg;
    }
    public struct TaobaoIP_Data
    {
        ///
        /// ip地址
        ///
        public string ip;
        ///
        /// 国家
        ///
        public string country;
        ///
        /// 区域
        ///
        public string area;
        ///
        /// 省份
        ///
        public string region;
        ///
        /// 城市
        ///
        public string city;
        ///
        /// 运营商
        ///
        public string isp;
        public string country_id;
        public string area_id;
        public string region_id;
        public string city_id;
        public string county_id;
        public string isp_id;
    }
}

代码如下:

TaobaoIP result1 = TaobaoIPHelper.GetIP("8.8.8.8");
            if (result1.code == 0)
            {
                Console.WriteLine(string.Format("调用成功。该ip的国家为{0},省份为{1},城市为{2},运营商为{3}"
                    , result1.data.country, result1.data.region, result1.data.city, result1.data.isp)
                    );
            }
            else
            {
                Console.WriteLine("失败,原因为:"+result1.errorMsg);
            }
            TaobaoIP[] result2 = TaobaoIPHelper.GetDomain("lixin.me");
            foreach (TaobaoIP item in result2)
            {
                if (item.code == 0)
                {
                    Console.WriteLine(string.Format("调用成功。该ip的国家为{0},省份为{1},城市为{2},运营商为{3}"
                    , item.data.country, item.data.region, item.data.city, item.data.isp)
                    );
                }
                else
                {
                    Console.WriteLine("失败,原因为:" + item.errorMsg);
                }
            }

    
 
 

您可能感兴趣的文章:

  • Django项目使用示例步骤及代码
  • linux使用shell脚本,如何创建用户,并设置用户密码?能否给出示例?
  • 使用libpcap实现抓包程序的步骤及代码示例
  • curl不使用文件存取cookie php使用curl获取cookie示例
  • python使用循环实现批量创建文件夹示例
  • jQuery 回车事件enter使用示例
  • jquery中交替点击事件toggle方法的使用示例
  • php中的strpos使用示例
  • sql使用cast进行数据类型转换示例
  • mysql求和函数使用示例
  • 使用python实现strcmp函数功能示例 iis7站长之家
  • java使用正则表达校验手机号码示例(手机号码正则)
  • 使用java执行定时任务示例
  • java的split方法使用示例
  • c++11可变参数使用示例
  • c#的params参数使用示例
  • android开发教程之switch控件使用示例
  • 使用python实现strcmp函数功能示例
  • c#使用资源文件的示例
  • 不使用php api函数实现数组的交换排序示例
  • java协变返回类型使用示例
  • php使用socket_bind()函数绑定IP地址
  • 一个pc的一个网卡有4个ip地址,当这个pc发送数据出去的时候如何选择使用哪个ip地址??
  • TinyXML(c++下操作xml的库)介绍,下载地址及使用代码举例
  • dma_map_single可以使用任意的地址吗?
  • 求redhat linux 9.0下可以使用的oracle 10g或9i,还有redhat linux 9.0下可以使用的eclipse下载地址
  • PHP实现使用优酷土豆视频地址获取swf播放器分享地址
  • 使用什么命令可以查看本机的IP地址。
  • linux中使用哪个命令可以得到对方机器的mac地址??给个例子
  • 如何使用telnet mail.domain.com 25 判断一个某个邮件大地址是否存在
  • 请问:使用RMI的时候如何知道对方的IP地址?(zhoudan)
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • C++ I/O 成员 tellg():使用输入流读取流指针
  • 在测试memset函数的执行效率时,分为使用Cash和不使用Cash辆种方式,该如何控制是否使用缓存?
  • C++ I/O 成员 tellp():使用输出流读取流指针
  • 求ibm6000的中文使用手册 !从来没用过服务器,现在急需使用它,不知如何使用! 急!!!!!
  • Python不使用print而直接输出二进制字符串
  • 请问:在使用oracle数据库作开发时,是使用pro*c作开发好些,还是使用库函数如oci等好一些啊?或者它们有什么区别或者优缺点啊?
  • Office 2010 Module模式下使用VBA Addressof
  • 急求结果!!假设一个有两个元素的信号量集S,表示了一个磁带驱动器系统,其中进程1使用磁带机A,进程2同时使用磁带机A和B,进程3使用磁带机B。
  • windows下tinyxml.dll下载安装使用(c++解析XML库)
  • c#中SAPI使用总结——SpVoice的使用方法
  • tcmalloc内存泄露优化c++开源库下载,安装及使用介绍
  • 使用了QWidget的程序,如何使用后台程序启动它?
  • sharepoint 2010 使用STSNavigate函数实现文件下载举例
  • 共享内存一般是怎么使用的,是同消息队列配合使用么
  • 使用libpcap读取tcpdump抓取的文件并解析c代码实例
  • Jsp可否使用带有GUI的JavaBean,如何使用?
  • c/c++预处理命令预#,##使用介绍
  • asp程序使用的access在Linux下如何使用!
  • 在div中使用css让文字底部对齐的方法
  • 新装的Linux使用root用户不能使用FTP?
  • Python namedtuple(命名元组)使用实例
  • LINUX下使用Eclipse,如何使用交叉编译器?


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3