C#根据IP地址查询所属地区实例详解

ip-api.com接口(解析 json需要引入Newtonsoft.Json.dll ):

/// <summary> 
    /// 根据IP 获取物理地址 
    /// </summary> 
    /// <param name="ip">Ip地址</param> 
    /// <returns></returns> 
    public static string GetIpAddress(string ip)
    {
      string url = "http://ip-api.com/json/"+ip+"?lang=zh-CN";
      string result = "";
      WebRequest wrt = null;
      WebResponse wrp = null;
      try
      {
        wrt = WebRequest.Create(url);
        wrt.Credentials = CredentialCache.DefaultCredentials;
 
        wrp = wrt.GetResponse();
        StreamReader sr = new StreamReader(wrp.GetResponseStream(), Encoding.UTF8);
        //获取到的是Json数据
        string html = sr.ReadToEnd();
 
        //Newtonsoft.Json读取数据
        JObject obj = JsonConvert.DeserializeObject<JObject>(html);
        string city = obj["city"].ToString();
        string province = obj["regionName"].ToString();
        result = city.Equals(province) ? city : (province + city);
      }
      catch (Exception)
      {
      }
      finally
      {
        if (wrp != null)
          wrp.Close();
        if (wrt != null)
          wrt.Abort();
      }
      return result;
    }

126.net接口: 

/// <summary> 
    /// 根据IP 获取物理地址 
    /// </summary> 
    /// <param name="ip">Ip地址</param> 
    /// <returns></returns> 
    public static string GetstringIpAddress(string ip)
    {
      string url = "http://ip.ws.126.net/ipquery?ip="+ip;
      string result="";
      WebRequest wrt = null;
      WebResponse wrp = null;
      try
      {
        wrt = WebRequest.Create(url);
        wrt.Credentials = CredentialCache.DefaultCredentials;
 
        wrp = wrt.GetResponse();
        StreamReader sr = new StreamReader(wrp.GetResponseStream(), Encoding.Default);
        //获取到的数据格式:var lo="江苏省", lc="镇江市"; var localAddress={city:"镇江市", province:"江苏省"}
        string html = sr.ReadToEnd();
        string pattern = "{city:\"(?<key1>.*?)\", province:\"(?<key2>.*?)\"}";
        Regex regex = new Regex(pattern, RegexOptions.None);
        Match match = regex.Match(html);
        string city=match.Groups["key1"].Value;
        string province=match.Groups["key2"].Value;
        result = city.Equals(province) ? city : (province + city);
      }
      catch (Exception)
      {
      }
      finally
      {
        if (wrp != null)
          wrp.Close();
        if (wrt != null)
          wrt.Abort();
      }
      return result;
    }

到此这篇关于C#根据IP地址查询所属地区实例详解的文章就介绍到这了,更多相关C#根据IP地址查询所属地区内容请搜索呐喊教程以前的文章或继续浏览下面的相关文章希望大家以后多多支持呐喊教程!

声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:notice#nhooo.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。