C#中通过调用webService获取上网IP地址的区域的方法

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

  该WebService的说明如下:

  • getCountryCityByIp

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

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

     

  • getGeoIPContext

    获得您的IP地址和地址信息

    输入参数:无,返回数据: 一个一维字符串数组String(1),String(0) = IP地址;String(1) = 地址信息

     

  • getVersionTime

    获得本IP地址搜索 WEB 服务的数据库版本更新时间

    输入参数:无,输出参数 String


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

    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添加到项目中去(创建web references),然后调用这个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地址的区域就成功实现了。

 

posted @ 2012-06-08 16:20  威少  阅读(806)  评论(0编辑  收藏  举报