C# 网络编程之通过ip地址获取地理位置(补充)

简介:
+关注继续查看

前面我写过一篇文章"C# 网络编程之获取本机名、ip地址、域名、物理位置"里面可以根据输入的网址根据其ip地址获取器物理位置,其中该部分主要代码是通过有道网提供的在线第三方接口实现动态获取它的数据.引用popping_dancer的博客代码,其主要代码如下图所示:

/// <summary>
/// 根据IP 获取物理地址
/// </summary>
/// <param name="strIP"></param>
/// <returns></returns>
public static string GetstringIpAddress(string strIP) //strIP为IP
{
    string sURL = "http://www.youdao.com/smartresult-xml/search.s?type=ip&q=" + strIP + "";
    string stringIpAddress = "";                     //地理位置
    using (XmlReader read = XmlReader.Create(sURL))  //获取youdao返回的xml格式文件内容
    {
        while (read.Read())                          //从流中读取下一个字节
        {
            switch (read.NodeType)
            {
                case XmlNodeType.Text:               //取xml格式文件当中的文本内容
                    if (string.Format("{0}", read.Value).ToString().Trim() != strIP)
                    {
                        stringIpAddress=string.Format("{0}", read.Value).ToString().Trim();
                    }
                    break;
            }
        }
    }
    return stringIpAddress;
}

当时获取的结果如下图所示,但是可能由于有道已经删除该URL网址,现在已经不能通过该接口获取地理位置.所有我又提供了一种新的方法,希望能帮助到大家和那位朋友.

 

由于能力有限,只会通过访问第三方接口获取物理地址,而且很大程度上取决于该网站提供的库数据,如果采用访问本地静态的库查找相应的地理位置,也不太适用.现在访问的网址是:http://www.freegeoip.net/xml/ 

 

源代码及显示的结果如下所示:

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;     //Xml文档

namespace GetLocation
{
    class Program
    {
        static void Main(string[] args)
        {
            string strIP = "74.125.31.104";                            //ip地址
            string strURL = "http://www.freegeoip.net/xml/" + strIP;   //网址URL
            string Location = "";                                      //物理位置
            //通过GetElementsByTagName获取标签结点集合
            XmlDocument doc = new XmlDocument();                     //Xml文档
            doc.Load(strURL);                                        //加载strURL指定XML数据
            XmlNodeList nodeLstCity = doc.GetElementsByTagName("City"); //获取标签
            Location = "获取单个物理位置:" + nodeLstCity[0].InnerText + "";
            Console.WriteLine(Location);
            //通过SelectSingleNode匹配匹配第一个节点
            XmlNode root = doc.SelectSingleNode("Response");
            if (root != null)
            {
                string CountryName = (root.SelectSingleNode("CountryName")).InnerText;
                string RegionName = (root.SelectSingleNode("RegionName")).InnerText;
                string City = (root.SelectSingleNode("City")).InnerText;
                Location="国家名称:"+CountryName+"\n区域名称:"+RegionName+"\n城市名称:"+City;
                Console.WriteLine(Location);
            }
            Console.Read();
        }
    }
}

文章主要通过GetElementsByTagName和SelectSingleNode两种方法获取Xml文档中提取标签Tag,获取http://www.freegeoip.net/xml/www.baidu.com中的物理位置.推荐大家学习C#中读取Xml文件制定结点的知识.运行结果如下图所示:

下面提供一些这方面的有些非常优秀的内容仅供大家学习,同时也方便自己下次查阅:
1.C# 网络编程之获取本机名\IP地址\域名\物理位置 (这是我自己的文章,结合该篇文章学习)
http://blog.csdn.net/eastmount/article/details/9270221
2.Get user location by IP address(使用C#获取物理位置 也是该篇文章的基础)
http://www.codeproject.com/Questions/686644/Get-user-location-by-IP-address
3.获取电脑物理地址以及通过IP地址获取当前地理位置的接口-抢街饭的专栏(使用PHP获取非常优秀的文章)
http://blog.csdn.net/lzwjavaphp/article/details/6972667
4.IP Address Location In ASP.NET(consume a free online API and fetch data using LINQ To XML)
http://www.dotnetcurry.com/showarticle.aspx?ID=325
5.get uesr location by ip address(关于它的讨论 希望大家去Stack Overflow学习知识)
http://stackoverflow.com/questions/4327629/get-user-location-by-ip-address
 6.XmlDocument.Load(url)问题(读取天气信息文章,与我的方法相同)
http://www.cnblogs.com/sharpfeng/archive/2011/03/02/1968666.html
最后希望该篇文章对大家有所帮助,同时希望该文章能帮助那位同学解决问题.如果文章中错误或不足之处,见谅!由于只会采用这种通过第三方接口的方法获取物理位置,很大程度依赖与第三方的数据,如果该网址被废除,很麻烦,同时会遇到不同网址查询结果也不同.希望有好的方法可以讨论分享.
(By:Eastmount 2014-1-22 下午5点 http://blog.csdn.net/eastmount

目录
相关文章
|
4月前
|
存储 域名解析 缓存
2023-6-13-IP配置知识补充学习
2023-6-13-IP配置知识补充学习
124 0
|
5月前
|
边缘计算 运维 负载均衡
获取客户端真实 IP 地址的最佳实践
翻遍整个互联网,几乎没有文章能把 “获取客户的真实 IP 地址” 这个看起来很简单的事情捋清楚、讲明白,更不用说最佳实践。这篇文章也是我在这段时间的研究中总结出来的宝贵经验,希望对读者能有些许帮助。
154 1
|
5月前
|
API 定位技术
百度地图web服务API接口实现IP到简要地址的转化
百度地图web服务API接口实现IP到简要地址的转化
76 0
|
5月前
|
网络协议 中间件 物联网
网络基础学习:ip地址的知识
网络基础学习:ip地址的知识
|
10月前
|
网络协议 网络架构 数据格式
IP地址:一个我们必须知道的概念
IP地址:一个我们必须知道的概念
101 0
|
数据采集 Python
Python爬虫系列3-通过Ip地址定位目标所在区域
在现如今的互联网时代,我们越来越依赖网络,甚至网络已经融入了我们的日常生活,甚至没有办法想象如果没有了网络,会造成什么样的情景?。。。
Python爬虫系列3-通过Ip地址定位目标所在区域
|
网络协议
重学计算机网络(二) - 曾记否,查IP地址(下)
重学计算机网络(二) - 曾记否,查IP地址(下)
110 0
|
网络协议 Unix Java
重学计算机网络(二) - 曾记否,查IP地址(上)
重学计算机网络(二) - 曾记否,查IP地址(上)
121 0
重学计算机网络(二) - 曾记否,查IP地址(上)
|
网络协议 Linux
重学计算机网络(二) - 曾记否,查IP地址
先献上几个梗 1.1.1.1 不是测试用的,原来一直没分配,现在被用来做一个DNS了,宣传是比谷歌等公司的dns服务更保护用户隐私。 IP地址255.255.255.255,代表有限广播,它的目标是网络中的所有主机。
950 0
相关产品
云迁移中心
推荐文章
更多