• 根据Ip获取城市帮助类


    思路构建

    1.先通过本地的测IP地址库进行匹配

    2.如果本地IP地址库存在此IP的城市信息,就直接返回,调用速度也快

    3.如果本地没有对应的IP城市信息,必须通过调用网络的IP查询的API了,这里我使用了(百度,新浪,和淘宝)

    注意:百度的调用不是很正常,大批量调用

     要引用dll Newtonsoft.Json.dll
    
    下载地址:http://www.newtonsoft.com/products/json/
    1.解压下载文件,得到Newtonsoft.Json.dll
     2.在项目中添加引用..
    3.兼容.net framwork2.0到4.5框架

        使用NewtonSoft.JSON.dll来序列化和发序列化对象


    1        #region 调用百度  新浪和淘宝接口返回地址   1.百度 2.新浪 3.淘宝
    2         /// <summary>
    3         /// 调用百度  新浪和淘宝接口返回地址   1.百度 2.新浪 3.淘宝
    4         /// </summary>
    5         /// <param name="Serve">1.百度 2.新浪 3.淘宝</param>
    6         /// <param name="ipAddress"></param>
    7         /// <returns></returns>
    8         public string GetAddress(int Serve, string ipAddress)
    9         {
    10             try
    11             {
    12                 var match =
    13                     new Regex(@"((?:(?:25[0-5]|2[0-4]d|((1d{2})|([1-9]?d))).){3}(?:25[0-5]|2[0-4]d|((1d{2})|([1-9]?d))))");
    14                 if (!match.IsMatch(ipAddress))
    15                 {
    16                     return string.Empty;
    17                 }
    18                 var webClient = new System.Net.WebClient();
    19                 NameValueCollection postValues = null;
    20                 // 向服务器发送POST数据
    21                 var url = string.Empty;
    22                 if (Serve == 1)
    23                 {
    24                     url = "http://api.map.baidu.com/location/ip";
    25                     postValues = new System.Collections.Specialized.NameValueCollection
    26                             {
    27                                 {"ak", "MRkBd6jnGOf8O5F58KKrvit5"},
    28                                 {"ip", ipAddress},
    29                                 {"coor", "bd09ll"}
    30                             };
    31                 }
    32                 else if (Serve == 2)
    33                 {
    34                     url = "http://int.dpool.sina.com.cn/iplookup/iplookup.php";
    35                     postValues = new System.Collections.Specialized.NameValueCollection
    36                             {
    37                                 {"format", "json"},
    38                                 {"ip", ipAddress}
    39                             };
    40                 }
    41                 else
    42                 {
    43                     url = "http://ip.taobao.com/service/getIpInfo.php";
    44                     postValues = new System.Collections.Specialized.NameValueCollection
    45                             {
    46                                 {"ip", ipAddress}
    47                             };
    48                 }
    49
    50                 byte[] responseArray = webClient.UploadValues(url, postValues);
    51
    52                 string response = System.Text.Encoding.UTF8.GetString(responseArray);
    53
    54                 var dataJson = JObject.Parse(response);  //动态解析  正常的解析无法生效
    55                 string address = string.Empty;
    56                 //百度接口
    57                 if (Serve == 1)
    58                 {
    59                     if (dataJson["status"].ToString() == "0")
    60                     {
    61                         address = dataJson["content"]["address_detail"]["province"] + "," + dataJson["content"]["address_detail"]["city"];
    62                     }
    63                 }
    64                 //新浪接口
    65                 else if (Serve == 2)
    66                 {
    67                     if (dataJson["ret"].ToString() == "1")
    68                     {
    69                         address = dataJson["province"] + "," + dataJson["city"];
    70                     }
    71                 }
    72                 //淘宝接口
    73                 else
    74                 {
    75                     if (dataJson["code"].ToString() == "0")
    76                     {
    77                         if (!string.IsNullOrEmpty(dataJson["data"]["region"].ToString()))
    78                             address = dataJson["data"]["region"] + "," + dataJson["data"]["city"];
    79                     }
    80                 }
    81                 if (string.IsNullOrEmpty(address))
    82                 {
    83                     address = "局域网";
    84                 }
    85                 return address;
    86             }
    87             catch(Exception ex)
    88             {
    89                 Console.WriteLine(ex.Message);
    90                 return string.Empty;
    91             }
    92         }
    93         #endregion

    调用方式:

    ipAddressName = ipHelper.GetAddress(2, ipaddress);//调用新浪接口返回数据
  • 相关阅读:
    判断一个数是否是偶数,你真的仔细去考虑过么
    由懒加载所引出的性能优化
    DSAPI之摄像头追踪指定颜色物体
    DSAPI多功能组件编程应用反射相关
    DSAPI HTTP监听服务端与客户端_指令版
    DSAPI多功能组件编程应用网络相关(中)
    DSAPI多功能组件编程应用网络相关(上)
    DSAPI多功能组件编程应用HTTP监听服务端与客户端
    DSAPI HTTP监听服务端与客户端
    DSAPI多功能组件编程应用图形图像篇(中)
  • 原文地址:https://www.cnblogs.com/zhangsupermaker/p/4550171.html
Copyright © 2020-2023  润新知