通过Web Service实现IP地址查询功能的示例

实例01 实现一个简单的Web服务访问

本实例将实现IP地址查询接口服务,根据用户传入的IP地址返回IP所在的省、市、地区,实例中将会用到IP地址库用于查询信息,由于数据较多,所以读者可在光盘资源文件中直接附加数据库文件,这里将不再介绍导入数据的过程。

程序实现步骤如下:

(1)打开Visual Studio 2017开发环境,然后依次点击文件→新建→项目,在弹出的新建项目对话框中选择“ASP.NET Web应用程序”选项,然后更改项目名称和项目路径,如图12.1所示。

通过Web Service实现IP地址查询功能的示例

图12.1 新建ASP.NET Web应用程序

(2)单击“确定”按钮,将弹出选择项目类型对话框,在该对话框中可选择Web Forms或MVC等项目类型,这里选择“Empty”空项目类型,然后点击确定按钮,如图12.2所示。

通过Web Service实现IP地址查询功能的示例

图12.2 创建空项目

(3)Ip地址查询功能的条件属于IP地址段范围查找,所以在进行筛选时通常要将IP地址转换成Int类型,这样做是方便于数据的范围筛选,所以接下来定义IP地址的数据类型转换方法,代码如下:

privatelong IPToNumber(string ip)//定义IP转Int方法,参数ip为用户要查询的ip地址 { try { char[] separator = newchar[] { '.' };//定义char类型的分割数组 string[] items = ip.Split(separator); //将ip字符串以“.”进行分割并返回数组 //将ip地址的每一段拆分成二进制形式,然后再将二进制转换成无符号的32位整数 returnlong.Parse(items[0]) << 24 | long.Parse(items[1]) << 16 | long.Parse(items[2]) << 8 | long.Parse(items[3]); } catch { return 0;//如果发生异常则返回0 } }

(4)接着定义获取IP地址的公开方法,该方法将带有一个字符串类型的参数,参数表示用户要查询地区的IP地址,代码如下:

[WebMethod(Description = "IP地址归属地查询")] publicstringGetIPToArea (string ip) { long IP = IPToNumber(ip);//传入string类型的ip地址,返回long类型的ip地址 //创建数据库连接对象 SqlConnection conn = newSqlConnection("Server=127.0.0.1;Database=School;Uid=sa;Pwd=123456"); conn.Open(); //打开数据库 DataSet ds = newDataSet(); //定义DataSet //创建数据适配器 SqlDataAdapter sda = newSqlDataAdapter("select * from IpAddress where IP1<=" + IP + " and IP2>=" + IP, conn); sda.Fill(ds); //填充DataSet conn.Dispose(); //释放数据库使用资源 DataTable dt = ds.Tables[0];//返回查询的数据表 if (dt.Rows.Count > 0) //判断如果数据总数大于0 { string Province = (string)dt.Rows[0]["Province"];//获取省 string City = (string)dt.Rows[0]["City"]; //获取市 return ip + ","+Province + "," + City; //将ip地址与省和市拼接然后返回 } return"未找到IP地址所对应的地区信息"; //返回无数据信息 }

代码完成之后,接下就是调用这个服务,首先运行这个服务页面,这与运行Web页面相同,在弹出来的网页中包含了对于这个服务页面的说明,其中页面上有两个可点击的连接,该连接对应的是服务中定义的方法名称,一个是刚才定义GetIPToArea方法,并且带有方法描述信息,另一个则是创建服务页面时自动生成的测试方法,这里直接点击GetIPToArea方法连接,如图12.3所示。

通过Web Service实现IP地址查询功能的示例

图12.3 Web服务帮助页面

点击之后页面会跳转到可对该方法执行调用的页面,这个页面帮助我们可以很方便的测试创建的服务。在页面上有一个文本框用于输入方法的参数值,并且下面还有一个“调用”按钮,当用户输入完参数值后,点击“调用”按钮即可执行服务程序然后等待返回结果,如图12.4所示。

通过Web Service实现IP地址查询功能的示例

图12.4 Web服务调用页面

最后调用结果将会以弹出新的窗口来显示,如图12.5所示。

通过Web Service实现IP地址查询功能的示例

图12.5 GetIPToArea方法返回的结果页面

从上面的测试结果可以看出,Web服务的方法的返回结果是使用XML进行编码的。

实例02 实现局域网内的Web服务访问

在本地环境下可通过将Web服务发布到IIS中,在进行调用者的访问。本实例将实现如何在本地环境下进行调用Web服务。

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wdpyfy.html