• c#根据ip获取城市地址


    用的API是百度、新浪、淘宝:

    1、首先是一个检测获取的值是不是中文的方法,因为有的ip只能识别出来某省,而城市名称则为空返回的json里会出现null或undefined。

    1 public static bool HasChinese(string str)
    2     {
    3         return Regex.IsMatch(str, @"[u4e00-u9fa5]");
    4     }

    百度的API

    /// <summary>
        /// 百度api
        /// </summary>
        /// <returns></returns>
        public static string GetBaiduIp(string ip)
        {
            try
            {
                string cs = "";
                string url = "http://api.map.baidu.com/location/ip?ak=GlfVlFKSc6Y7aSr73IHM3lQI&ip=" + ip;
                WebClient client = new WebClient();
                var buffer = client.DownloadData(url);
                string jsonText = Encoding.UTF8.GetString(buffer);
                JObject jo = JObject.Parse(jsonText);
                var txt = jo["content"]["address_detail"]["city"];
                JToken st = txt;
                string str = st.ToString();
                if (str == "")
                {
                    cs = GetCS(ip);
                    return cs;
    
                }
                int s = str.IndexOf('');
                string css = str.Substring(0, s);
                bool bl = HasChinese(css);
    
                if (bl)
                {
                    cs = css;
                }
                else
                {
                    cs = GetCS(ip);
                }
    
                return cs;
            }
            catch
            {
                return GetIPCitys(ip);
            }
    
        }

    新浪API(这个是直接获取网页源代码,然后抓取)

     1  /// <summary>
     2     /// 新浪api
     3     /// </summary>
     4     /// <param name="ip"></param>
     5     /// <returns></returns>
     6 public static string GetCS(string ip)
     7     {
     8         try { 
     9         string url = "http://int.dpool.sina.com.cn/iplookup/iplookup.php?ip=" + ip;
    10         WebClient MyWebClient = new WebClient();
    11         MyWebClient.Credentials = CredentialCache.DefaultCredentials;//获取或设置用于向Internet资源的请求进行身份验证的网络凭据
    12         Byte[] pageData = MyWebClient.DownloadData(url); //从指定网站下载数据
    13         string stt = Encoding.GetEncoding("GBK").GetString(pageData).Trim();
    14         return stt.Substring(stt.Length - 2, 2);
    15         }
    16         catch
    17         {
    18             return "未知";
    19         }
    20 
    21     }

    淘宝API

     1 /// <summary>
     2     /// 淘宝api
     3     /// </summary>
     4     /// <param name="strIP"></param>
     5     /// <returns></returns>
     6     public static string GetIPCitys(string strIP)
     7     {
     8         try
     9         {
    10             string Url = "http://ip.taobao.com/service/getIpInfo.php?ip=" + strIP + "";
    11 
    12             System.Net.WebRequest wReq = System.Net.WebRequest.Create(Url);
    13             wReq.Timeout = 2000;
    14             System.Net.WebResponse wResp = wReq.GetResponse();
    15             System.IO.Stream respStream = wResp.GetResponseStream();
    16             using (System.IO.StreamReader reader = new System.IO.StreamReader(respStream))
    17             {
    18                 string jsonText = reader.ReadToEnd();
    19                 JObject ja = (JObject)JsonConvert.DeserializeObject(jsonText);
    20                 if (ja["code"].ToString() == "0")
    21                 {
    22                     string c = ja["data"]["city"].ToString();
    23                     int ci = c.IndexOf('');
    24                     if (ci != -1)
    25                     {
    26                         c = c.Remove(ci, 1);
    27                     }
    28                     return c;
    29                 }
    30                 else
    31                 {
    32                     return "未知";
    33                 }
    34             }
    35         }
    36         catch (Exception)
    37         {
    38             return ("未知");
    39         }
    40     }
  • 相关阅读:
    获取项目路径
    Form提交时隐藏Token验证
    属性路由参数约束
    使用Cookie来统计浏览次数,当天重复刷新不增加
    图片上传预览 支持html5的浏览器
    icheck.min.js 选中效果
    bootstrap-modal.js 居中问题
    七十二、SAP中内表的修改,添加条件语句,多条目修改
    七十一、SAP中内表的修改,改一行数据,或一行的某个字段
    七十、SAP中内表批量指定位置插入
  • 原文地址:https://www.cnblogs.com/ashidamana/p/5092001.html
Copyright © 2020-2023  润新知