[置顶] C#中通过调用webService获取上网IP地址的区域的方法
2012-05-02 09:48
561 查看
最近在开发项目的过程中需要获取用户查询时的IP地址的区域,以用来做统计分析用。经过一番查阅资料,然后写了个测试程序,很快就搞定了这个功能。
现在分享下我的实现方法,大家如果有更好的实现,欢迎提出哦。
首先我找到了一个比较好用的查询IP地址归属地的公用的WebService,http://webservice.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx。
调用其中的getCountryCityByIp
方法可以获取到具体的IP的区域地址。该WebService的说明如下:
getCountryCityByIp
接下来就是要获取用户当前电脑的上网IP了,具体的实现方法如下所示:
/// <summary>
/// 获取本机的上网IP
/// </summary>
/// <returns></returns>
private string GetConnectNetAddress()
{
string strUrl = "http://www.ip138.com/ip2city.asp"; //获得IP的网址
Uri uri = new Uri(strUrl);
WebRequest webreq = WebRequest.Create(uri);
Stream s = webreq.GetResponse().GetResponseStream();
StreamReader sr = new StreamReader(s, Encoding.Default);
string all = sr.ReadToEnd(); //读取网站返回的数据 格式:您的IP地址是:[x.x.x.x]
int i = all.IndexOf("[") + 1;
string tempip = all.Substring(i, 15);
string ip = tempip.Replace("]", "").Replace(" ", "").Replace("<", "");
return ip;
}
这个方法是http://www.ip138.com/ip2city.asp通过在这个网站上抓取到电脑的上网的IP地址来实现获取本机的上网的IP地址的。
当然如果那天这个网站更改了域名或者不存在了,这个方法就不能用了哦,呵呵。
接下来的事情就很简单了,将上面的webservice添加到项目中去,然后调用这个webservice来获取上网的区域。
具体实现如下:
/// <summary>
/// 获取上网IP的区域
/// </summary>
/// <returns></returns>
private string GetConnectNetAddressArea()
{
string strIP = GetConnectNetAddress();
IpAddressSearchWebService webService = new IpAddressSearchWebService();
string[] strArea=webService.getCountryCityByIp(strIP);
return strArea[1];
}
这样获取用户查询的上网IP地址的区域就成功实现了。
现在分享下我的实现方法,大家如果有更好的实现,欢迎提出哦。
首先我找到了一个比较好用的查询IP地址归属地的公用的WebService,http://webservice.webxml.com.cn/WebServices/IpAddressSearchWebService.asmx。
调用其中的getCountryCityByIp
方法可以获取到具体的IP的区域地址。该WebService的说明如下:
getCountryCityByIp
通过输入IP地址查询国家、城市、所有者等信息。没有注明国家的为中国
输入参数:IP地址(自动替换 " 。" 为 "."),返回数据: 一个一维字符串数组String(1),String(0) = IP地址;String(1) = 查询结果或提示接下来就是要获取用户当前电脑的上网IP了,具体的实现方法如下所示:
/// <summary>
/// 获取本机的上网IP
/// </summary>
/// <returns></returns>
private string GetConnectNetAddress()
{
string strUrl = "http://www.ip138.com/ip2city.asp"; //获得IP的网址
Uri uri = new Uri(strUrl);
WebRequest webreq = WebRequest.Create(uri);
Stream s = webreq.GetResponse().GetResponseStream();
StreamReader sr = new StreamReader(s, Encoding.Default);
string all = sr.ReadToEnd(); //读取网站返回的数据 格式:您的IP地址是:[x.x.x.x]
int i = all.IndexOf("[") + 1;
string tempip = all.Substring(i, 15);
string ip = tempip.Replace("]", "").Replace(" ", "").Replace("<", "");
return ip;
}
这个方法是http://www.ip138.com/ip2city.asp通过在这个网站上抓取到电脑的上网的IP地址来实现获取本机的上网的IP地址的。
当然如果那天这个网站更改了域名或者不存在了,这个方法就不能用了哦,呵呵。
接下来的事情就很简单了,将上面的webservice添加到项目中去,然后调用这个webservice来获取上网的区域。
具体实现如下:
/// <summary>
/// 获取上网IP的区域
/// </summary>
/// <returns></returns>
private string GetConnectNetAddressArea()
{
string strIP = GetConnectNetAddress();
IpAddressSearchWebService webService = new IpAddressSearchWebService();
string[] strArea=webService.getCountryCityByIp(strIP);
return strArea[1];
}
这样获取用户查询的上网IP地址的区域就成功实现了。
相关文章推荐
- C#中通过调用webService获取上网IP地址的区域的方法
- C#中通过调用webService获取上网IP地址的区域的方法
- .NET(C#)调用webService获取客户端IP地址所属区域(非异步)
- C# 通过Get、Post、Soap调用WebService的方法
- C# 通过Get、Post、Soap调用WebService的方法
- C#通过反射获取上层调用方法信息
- 通过silktest调用c#写的工具获取dll文件信息的方法
- C# 三种动态调用WebService的方法,测试通过
- 深入理解 c# 第三章 通过反射来调用和获取泛型方法
- C# ASP.NET通过IP地址获取归属地的方法
- java调用IP138获取本机IP以及通过IP地址获取区域名称
- java中通过反射获取方法并且调用(getMethod和invoke深入)实践
- 微信相关 -- 可以通过调用下面的方法 请求对应的url 获取微信服务器返回的json数据
- C#中Winform动态调用Webservice的方法(转)
- 在C#工程中通过Lua调用C#中的字段和方法
- 在c#中过滤通过System.IO.Directory.GetDirectories 方法获取的是所有的子目录和文件中的系统隐藏的文件(夹)的方法
- C#中Winform动态调用Webservice的方法
- 如何通过C#.NET中的反射机制来创建C#.NET泛型类的实例,并调用其方法??
- c#中的webservice调用delphi写的dll函数的方法
- C#中Winform动态调用Webservice的方法