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地址查询所属地区内容请搜索我们以前的文章或继续浏览下面的相关文章希望大家以后多多支持我们!

(0)

相关推荐

  • C#查询SqlServer数据库并返回单个值的方法

    本文实例讲述了C#查询SqlServer数据库并返回单个值的方法.分享给大家供大家参考.具体实现方法如下: static public string GetSqlAsString(string sqlText, SqlParameter[] sqlParameters, string databaseConnectionString) { string result = ""; SqlDataReader reader; SqlConnection connection = new S

  • C#实现航班查询及预订功能

    具体代码如下所示: using System; using System.Collections.Generic; using System.ComponentModel; using System.Data; using System.Drawing; using System.Linq; using System.Text; using System.Threading.Tasks; using System.Windows.Forms; using System.Data.SqlClien

  • C#程序执行时间长查询速度慢解决方案

    一,程序执行慢导致的原因就是查询数据库慢.,导致返回值慢,那这个要怎么解决呢? 1,优化数据库查询如这个文章 C#导出数据到excel如何提升性能 2,使用线程并行查询,然后合并成一个集合,代码如下,必须留意备注的核心点 using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; using System.Threading; using System.Threading

  • C#程序中使用LINQ to XML来查询XML格式数据的实例

    关于LINQ to XML LINQ to XML 是一种启用了 LINQ 的内存 XML 编程接口,使用它,可以在 .NET Framework 编程语言中处理 XML. 它将 XML 文档置于内存中,这一点很像文档对象模型 (DOM). 您可以查询和修改 XML 文档,修改之后,可以将其另存为文件,也可以将其序列化然后通过网络发送. 但是,LINQ to XML 与 DOM 不同: 它提供一种新的对象模型,这是一种更轻量的模型,使用也更方便,这种模型利用了 VisualC# 2008 在语言

  • C# linq查询之动态OrderBy用法实例

    本文实例讲述了C# linq查询之动态OrderBy用法.分享给大家供大家参考.具体分析如下: groupList是原始数据集合,List<T> sortOrder是排序类型,desc 或者asc sortName是排序属性名称 1.使用反射. private static object GetPropertyValue(object obj, string property) { System.Reflection.PropertyInfo propertyInfo = obj.GetTyp

  • C#使用LINQ查询表达式的基本子句总结

    LINQ查询表达式的基本语法很容易掌握,它使用C#常见的语言构造,从外观上看,和我们常用的SQL类似,并且查询表达式中的变量可以用匿名类型,所以在很多情况下,不需要指定变量类型就可以构建LINQ表达式. LINQ的数据源可以是数据库对象或是XML流等,也可以使实现了IEnumerable或者泛型IEnumberable<T>接口的集合对象. LINQ的基本语法包含如下的8个上下文关键字,这些关键字和具体的说明如下: 关键字 说明 from 指定范围变量和数据源 where 根据bool表达式从

  • 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 =

  • C#使用有道ip地址查询接口方法实例详解

    本文实例讲述了C#使用有道ip地址查询接口方法.分享给大家供大家参考.具体实现方法如下: #region 读取http://www.yodao.com接口IP地址 /// <summary> /// 读取http://www.yodao.com接口IP地址 /// </summary> public static string GetstringIpAddress(string strIP)//strIP为IP { string sURL = "http://www.yo

  • Java根据ip地址获取归属地实例详解

    目录 引言 Java 中是如何获取 IP 属地的 首先需要写一个 IP 获取的工具类 内置的三种查询算法 使用方法 项目用到的全部依赖 引言 最近,各大平台都新增了评论区显示发言者ip归属地的功能,例如哔哩哔哩,微博,知乎等等. Java 中是如何获取 IP 属地的 主要分为以下几步 通过 HttpServletRequest 对象,获取用户的 IP 地址 通过 IP 地址,获取对应的省份.城市 首先需要写一个 IP 获取的工具类 因为每一次用户的 Request 请求,都会携带上请求的 IP 

  • MongoDB 查询操作的实例详解

    MongoDB 查询操作的实例详解 使用find或findOne进行查询.并可以进行范围查询.数据集查询.不等式查询,以及其他的一些查询. 查询将会返回DBcursor 游标只有在你需要的时候返回文档 针对游标返回的文档(结果集) 进行操作 例如:忽略一定数量的结果,或者返回结果的数量,以及对结果的排序. 1.指定需要返回的键 有时候仅仅对文档的某几个键值感兴趣,可以屏蔽返回的不感兴趣的键值,返回感兴趣的键值 mongos> db.blog.find({},{"name":1})

  • Vue.js进行查询操作的实例详解

    Vue.js进行查询操作的实例详解 实例代码: <!DOCTYPE html> <html> <head> <meta charset="UTF-8"> <script src="../lib/vue.min.js" type="text/javascript" ></script> <title>字符转换</title> </head>

  • php mysql PDO 查询操作的实例详解

    php mysql PDO 查询操作的实例详解 <?php $dbh = new PDO('mysql:host=localhost;dbname=access_control', 'root', ''); $dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $dbh->exec('set names utf8'); /*添加*/ //$sql = "INSERT INTO `user` SET `log

  • 对python判断ip是否可达的实例详解

    python中使用subprocess来使用shell 关于threading的用法 from __future__ import print_function import subprocess import threading def is_reachable(ip): if subprocess.call(["ping", "-c", "2", ip])==0:#只发送两个ECHO_REQUEST包 print("{0} is a

  • Java中的IP地址和InetAddress类使用详解

    Java语言的优势之一是Java程序能访问网络资源.Java提供一系列的类支持Java程序访问网络资源. TCP/IP协议和IP地址 为了进行网络通信,通信双方必须遵守通信协议.目前最广泛使用的是TCP/IP协议,它是Internet中各方所遵循的公共协议.TCP(Transport Control Protocol)是一种传输控制协议,IP(Internet Protocol)是一种网际协议,TCP/IP代表这两个协议的. TCP/IP分为四个层次: 网络接口层:负责接收和发送物理帧: 网络层

  • Go语言ORM包中使用worm构造查询条件的实例详解

    目录 构造查询条件 main函数 数据库表与数据模型 通过ID来查询数据 通过Where函数来查询数据 XXXIf查询 in.not in查询 嵌套查询语句 Limit与Offset orderby查询 构造查询条件 worm是一款方便易用的Go语言ORM库.worm支Model方式(持结构体字段映射).原生SQL以及SQLBuilder三种模式来操作数据库,并且Model方式.原生SQL以及SQLBuilder可混合使用. Model方式.SQL builder支持链式API,可使用Where

  • MongoDB慢查询与索引实例详解

    目录 MongoDB慢查询 MongoDB索引 总结 MongoDB慢查询 慢查询分析 开启内置的慢查询分析器 db.setProfilingLevel(n,m),n的取值可选0,1,2 0:表示不记录 1:表示记录慢速操作,如果值为1,m需要传慢查询的阈值,单位为ms 2:表示记录所有的读写操作 示例: db.setProfilingLevel(1,3) 查询监控结果 db.system.profile.find().sort({millis:-1}).limit(3) MongoDB索引 什

随机推荐