zoukankan      html  css  js  c++  java
  • C#中通过调用webService获取上网IP地址的区域的方法

             最近在开发项目的过程中需要获取用户查询时的IP地址的区域,以用来做统计分析用。经过一番查阅资料,然后写了个测试程序,很快就搞定了这个功能。

    现在分享下我的实现方法,大家如果有更好的实现,欢迎提出哦。

    首先我找到了一个比较好用的查询IP地址归属地的公用的WebService,http://webservice.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx

    调用其中的getCountryCityByIp 方法可以获取到具体的IP的区域地址。该WebService的说明如下:

    getCountryCityByIp

    通过输入IP地址查询国家、城市、所有者等信息。没有注明国家的为中国

    输入参数:IP地址(自动替换 " 。" 为 "."),返回数据: 一个一维字符串数组String(1),String(0) = IP地址;String(1) = 查询结果或提示


    接下来就是要获取用户当前电脑的上网IP了,具体的实现方法如下所示:

    /// <summary>
            /// 获取本机的上网IP
            /// </summary>
            /// <returns></returns>
            private string GetConnectNetAddress()
            {
                string strUrl = "http://www.ip138.com/ip2city.asp"; //获得IP的网址
                Uri uri = new Uri(strUrl);
                WebRequest webreq = WebRequest.Create(uri);
                Stream s = webreq.GetResponse().GetResponseStream();
                StreamReader sr = new StreamReader(s, Encoding.Default);
                string all = sr.ReadToEnd(); //读取网站返回的数据 格式:您的IP地址是:[x.x.x.x]
                int i = all.IndexOf("[") + 1;
                string tempip = all.Substring(i, 15);
                string ip = tempip.Replace("]", "").Replace(" ", "").Replace("<", "");
                return ip;
            }

    这个方法是http://www.ip138.com/ip2city.asp通过在这个网站上抓取到电脑的上网的IP地址来实现获取本机的上网的IP地址的。

    当然如果那天这个网站更改了域名或者不存在了,这个方法就不能用了哦,呵呵。

    接下来的事情就很简单了,将上面的webservice添加到项目中去,然后调用这个webservice来获取上网的区域。

    具体实现如下:

     /// <summary>
            /// 获取上网IP的区域
            /// </summary>
            /// <returns></returns>
            private string GetConnectNetAddressArea()
            {
                string strIP = GetConnectNetAddress();
                IpAddressSearchWebService webService = new IpAddressSearchWebService();
                string[] strArea=webService.getCountryCityByIp(strIP);
                return strArea[1];
            }

    这样获取用户查询的上网IP地址的区域就成功实现了。




  • 相关阅读:
    无刷电机控制学习笔记
    "程序宅男"从改善皮肤开始——不再长痘
    跨平台国际化测试——Switch本体测试
    自动驾驶技术了解
    互联网加班狗:零碎时间学英语的方法
    ASCII,Unicode,GBK和UTF-8字符编码的区别和联系
    领域驱动设计的必要性和模型标准——《领域驱动设计-精简版》
    异步、非阻塞和IO多路复用总结
    Debian 8 安装Nginx最新版本
    字节、字、bit、Byte、byte的关系区分
  • 原文地址:https://www.cnblogs.com/kevinGao/p/2482117.html
Copyright © 2011-2022 走看看