最近在开发项目的过程中需要获取用户查询时的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地址的区域就成功实现了。
分享到:
相关推荐
webService调取IP所在地,以及获得客户端真实IP
在本文中,我们将详细介绍如何使用 C# 语言在 Winform 平台下开发 WebService Soap 应用,以实现列车时刻、手机归属、QQ 在线、航空时刻等查询工具。 WebService Soap 简介 WebService Soap 是一种基于 SOAP 协议...
在.NET框架中,当我们使用代理类调用WebService时,通常会通过WSDL(Web Service Description Language)文件自动生成一个与WebService接口匹配的客户端代理类。这个代理类包含了所有可供调用的服务方法,使得我们...
本话题主要探讨如何通过WebService技术获取服务端的硬件信息以及客户端的IP地址、MAC地址和浏览器信息,甚至进一步定位到客户端所在的城市。这在系统监控、数据分析、安全防护等多个领域都有着重要的应用。 首先,...
在C#中,可以通过多种方式来获取本机的IP地址,其中一种常用的方法是通过访问特定的在线服务来获取。例如,在提供的代码片段中,通过调用`http://www.ip138.com/ip2city.asp`这个URL来获取本机IP地址。 ```csharp /...
通过 URL 可以调用 WebService 的方法,例如: ``` http://IP地址/Webservice/Addservice.asmx/Add?a=10&b=5 ``` 这将返回一个 XML 格式的结果,包含两个整数相加的结果。 #### 三、客户端调用 WebService 的过程 ...
通过WebService与Android实现通信是跨平台开发中常见的一种方式,特别是在使用C#作为后端语言进行服务端开发,而Android应用作为前端时。本文将基于提供的文件信息,深入解析这一技术实现的关键步骤与原理。 ### ...
4. **绑定和监听**:设置Socket监听的IP地址(通常为localhost或特定IP)和端口号(如8081),然后启动监听。 ```csharp IPEndPoint ipEndPoint = new IPEndPoint(IPAddress.Any, 8081); serverSocket.Bind...
开发者可以通过调用这个接口,获取到微信用户日志中的地理位置对应的行政区域信息。 四、接口实现与使用 要使用腾讯地图的地址解析接口,开发者需要注册并获取API密钥。然后,可以构建一个HTTP请求,携带API密钥和...
总的来说,使用C#和VS2008创建Web Service客户端,IP地址查询涉及的关键技术包括:对SOAP和XML的理解、生成和使用服务代理类、调用Web Service方法以及处理返回数据。通过这样的实践,你可以深入理解Web Service的...
通过IP地址转中国城市(webservice)版,您可以获得:最新IP地址转中国城市数据库数据,它包含319356条国内IP,字段:IP地址、省份、城市。内附调用方法(支持Asp,.NET,C#,PHP等开发语言)。可以根据指定的IP返回 ...
一、前言由于项目中一个小的模块需要获取客户端的IP地址以保证安全调用webservice接口,项目中客户端使用C#编写,服务器端使用Java编写,服务器端与客户
- 在该单元文件中实现基本的接口(`IInvokable`)并定义客户端可调用的方法。 **示例代码**: ```pascal unit Unit1; interface uses InvokeRegistry; type IWebTest = interface(IInvokable) ['{A436...
- 在`WebService1.asmx.cs`文件中,创建一个名为`GetCityByIP`的方法,该方法接受一个字符串参数(IP地址),并返回另一个字符串(城市名)。 3. **调用第三方API** - 使用HttpClient类或WebClient类发起HTTP请求...
1. **创建服务端**:首先,开发者定义了一个Java类,该类包含一个方法用于根据输入的IP地址返回相关的地理位置信息。然后,使用AXIS工具,这个Java类被包装成一个Web服务,发布到服务器上。这个过程通常涉及到生成...
*** (C#) 动态修改 WebService 的地址和端口是网络服务编程中的一个重要知识点。这一技术主要应用于在应用程序运行时改变 WebService 的连接点,这对于实现灵活的服务调用以及在部署或运行时更新服务位置非常有用。...
1. DNS解析时间:当应用程序尝试连接到web service时,首先需要将服务的URL转换为IP地址,这个过程可能涉及到域名解析(DNS查询),第一次解析可能会比较耗时。 2. SSL握手:如果web service使用HTTPS协议进行安全...
在WebLogic环境中,可以通过管理控制台或WLST(WebLogic Scripting Tool)添加Web Service消费者,配置服务端点,然后在应用程序中调用服务。 **已解决及未解决的问题** 7.1. 未解决的问题 在实践中,可能会遇到...
例如,获取远程IP地址: ```csharp using System.Net; public async Task<string> GetRemoteIPAddress() { using (var client = new WebClient()) { return await client.DownloadStringTaskAsync(...