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

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

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

程序实现步骤如下:

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

dce3dfc867dff5cf54e63424d5c30ad2.png

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

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

73340d9589f4471d8620a43456a40f60.png

图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所示。

30278865e453353a856777836182a5d0.png

图12.3 Web服务帮助页面

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

4bbee33d392765c0a5414c6aafa8bae4.png

图12.4 Web服务调用页面

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

c6f1ca8aaa66976072578f7bb4cca588.png

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

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

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

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

(1)首先打开IIS管理工具,在IIS管理工具中“网站”的节点下创建一个网站,目录指定已经编写好的Web服务应用程序文件夹,然后命名网站名称并分配IP地址和端口号。这个过程同创建网站站点相同,最后点击“确定”按钮完成创建,如图12.6所示。

395ba7bbec8ad17d6292f5bb47dfc10f.png

图12.6 发布Web服务到IIS

图12.6中创建的Web服务站点指定目录为实例01中创建的的Web服务引用程序,所以接下来在创建一个网站程序用于调用Web服务,该过程主要演示如何添加“服务引用”的操作。

(2)首先新建一个网站并创建Default.aspx页面,在页面中添加一个TextBox控件、一个Button控件和两个Label控件,分别用来输入IP地址、执行查询操作和显示结果信息。

(3)在项目上单击鼠标右键,在弹出的快捷菜单中选择“添加”→“服务引用”选项,弹出“添加服务引用”对话框,如图12.7所示。

472b5a096fc089fd1e3e6f5dd3f18167.png

图12.7 “添加服务引用”对话框

(4)引用添加完成之后,将在“解决方案资源管理器”中添加一个名为App_WebReferences的目录,在该目录中将显示命名空间为ServiceReference1的服务,如图12.8所示。

ffb035bb61c96a9e9e7d28008e2bf902.png

图12.8 添加的ServiceReference1服务

(5)在Default.aspx页的“查询IP地址”按钮控件的Click事件中,通过调用服务对象的GetIPToArea方法查询信息,代码如下:

protectedvoid Button1_Click(object sender, EventArgs e)

{

ServiceReference1.WebService1SoapClient webService1SoapClient =

new ServiceReference1.WebService1SoapClient();

string Result = webService1SoapClient.GetIPToArea(this.TextBox1.Text);

while (Result.IndexOf(",") > -1)

{

Result = Result.Replace(",", "
");

}

this.Label1.Text = "以下为输出IP、省、市的结果:";

this.Label2.Text = Result;

}

运行Default.aspx页面,在文本框中输入一个有效的IP地址,然后点击“查询IP地址”按钮,页面将会输出查询到的结果信息,如图12.9所示。

e4558aacf895dd4684aaa9bea6f46df9.png

图12.9 调用Web服务结果

本文摘自明日科技出版的《零基础学ASP.NET》

以上这篇通过Web Service实现IP地址查询功能的示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/532880.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java五星好评点评器_亲,麻烦给个五星好评!—RatingBar

引言上一篇的CheckBox已经让大家越来越接近实战演练了&#xff0c;本章我们继续分享干货给大家&#xff0c;今天介绍一个实用的UI控件RatingBar(星级评分条)&#xff0c;对于使用过电商APP(某东&#xff0c;某宝等)的小伙伴们来说&#xff0c;应该不会陌生。在对商品进行评价时…

java激光推送ios_关于ios极光推送server端注意的地方

今天试用了极光推送API用它是因为&#xff0c;大多数人说它的文档是最全的&#xff0c;但是用过之后&#xff0c;发现关于IOS的文档&#xff0c;还是很不够&#xff0c;导致走了一点弯路&#xff01;特别是服务端的代码&#xff1a;https://github.com/jpush/jpush-api-java-cl…

日是这一年的等几天Java代码_java中计算指定日期是一年的第几天的方法

Java输入日期计算是这年的第几天&#xff1a;思路通过年份区分出是闰年还是平年&#xff0c;平年 2 月 28 天&#xff0c;闰年 2 月 29 天&#xff1b;1、3、5、7、8、10、12 月份 31 天其余月份均为 30 天&#xff1b;然后将每个月的天数相加即可&#xff0c;注意如果输入的是…

[2021-CVPR] Fine-grained Angular Contrastive Learning with Coarse Labels 论文简析

[2021-CVPR] Fine-grained Angular Contrastive Learning with Coarse Labels 论文简析 论文地址&#xff1a;https://arxiv.org/abs/2012.03515 代码地址&#xff1a;https://github.com/guybuk/ANCOR 首先通俗地介绍一下细粒度&#xff08;fine-grained&#xff09;&#…

[2020-AAAI] Revisiting Image Aesthetic Assessment via Self-Supervised Feature Learning 论文简析

[2020-AAAI] Revisiting Image Aesthetic Assessment via Self-Supervised Feature Learning 论文简析 论文链接&#xff1a;https://arxiv.org/abs/1911.11419 本文探索从自监督的角度进行美学评估。基于一个基本的动机&#xff1a;一个好的美学特征表示应该能够辨别出不同的…

java9 堆外内存_java堆外内存泄漏排查

当考虑Java中的内存泄漏时&#xff0c;我们通常会考虑Java堆泄漏&#xff0c;即在堆中分配的对象没有被垃圾收集。这是我在处理一台服务器内存泄漏时的想法&#xff0c;但我即将经历的远超出我的想象。症状&#xff1a;运行Vertx应用程序(没有交换分区)的生产服务器被Linux内存…

[2020-CVPR] Dynamic Region-Aware Convolution 论文简析

[2020-CVPR] Dynamic Region-Aware Convolution 论文简析 论文地址&#xff1a;https://arxiv.org/abs/2003.12243 参考代码地址&#xff08;非官方&#xff09;&#xff1a;https://github.com/shallowtoil/DRConv-PyTorch 代码笔者自己试了一下&#xff0c;应该是可以的&…

mmdetection 使用笔记 01: 安装与简单的推理demo

mmdetection 使用笔记 01: 安装与简单的推理demo mmdetection是来自商汤和港中文联合实验室openmmlab推出的目标检测工具包&#xff0c;与其同系列的还有基础视觉包mmcv&#xff0c;图像分类mmclassification&#xff0c;还有mmaction&#xff0c;mmaction2等等。 今天第一次…

php无限评论回复_php实现无限级评论功能_后端开发

php去除数组的键名的方法_后端开发在php中可以使用“array_values()”函数去除数组的键名&#xff0c;该函数返回包含数组中所有的值的数组&#xff0c;其语法是“array_values(array)”&#xff0c;其参数“array”表示规定的数组&#xff0c;返回值是包含数组中所有的值的数组…

错误类型、混淆矩阵及目标检测常用评价指标

目标检测常用评价指标 本文主要参考陈恺大佬在B站商汤账号的介绍mmdetection的视频。 检测结果的正确/错误类型 真阳性&#xff08;Ture Positive&#xff09;&#xff1a;算法检测到了某类物体&#xff08;Positive&#xff09;&#xff0c;而实际图中也确实有这个物体&…

使用yolov5训练自己的目标检测数据集

使用yolov5训练自己的目标检测数据集 yolov4出来后不久&#xff0c;又出现了yolov5&#xff0c;没有论文。虽然作者没有放上和yolov4的直接测试对比&#xff0c;但在COCO数据集的测试效果还是很可观的。很多人考虑到YOLOv5的创新性不足&#xff0c;对算法是否能够进化&#xf…

php获取h1,jQuery获取h1-h6标题元素值方法实例

本文主要介绍了jQuery实现获取h1-h6标题元素值的方法,涉及$(":header")选择器操作h1-h6元素及事件响应相关技巧,需要的朋友可以参考下&#xff0c;希望能帮助到大家。1、问题背景&#xff1a;查找到h1-h6&#xff0c;并遍历它们&#xff0c;打印出内容2、实现代码&am…

[2021-CVPR] Jigsaw Clustering for Unsupervised Visual Representation Learning 论文简析及关键代码简析

[2021-CVPR] Jigsaw Clustering for Unsupervised Visual Representation Learning 论文简析及关键代码简析 论文&#xff1a;https://arxiv.org/abs/2104.00323 代码&#xff1a;https://github.com/dvlab-research/JigsawClustering 总结 本文提出了一种单批次&#xff0…

matlab legend 分块,matlab legend 分块!

matlab legend 分块&#xff01;(2013-03-26 18:07:38)%%%压差clc;clear all;figure(55);set (gcf,Position,[116 123 275 210],color,w);P[25 26 27 28 29 30 31 32 33 34 35];%理论q0.00006*pi*28*P*10^(6)*0.03^3/(12*0.028448*5);q1110.00006*pi*28*P*10^(6)*0.03^3/(12*0.…

利用opencv-python绘制多边形框或(半透明)区域填充(可用于分割任务mask可视化)

利用opencv-python绘制多边形框或&#xff08;半透明&#xff09;区域填充&#xff08;可用于分割任务mask可视化&#xff09; 本文主要就少opencv中两个函数polylines和fillPoly分别用于绘制多边形框或区域填充&#xff0c;并会会以常见用途分割任务mask&#xff08;还是笔者…

Positional Encodings in ViTs 近期各视觉Transformer中的位置编码方法总结及代码解析 1

Positional Encodings in ViTs 近期各视觉Transformer中的位置编码方法总结及代码解析 最近CV领域的Vision Transformer将在NLP领域的Transormer结果借鉴过来&#xff0c;屠杀了各大CV榜单。对其做各种改进的顶会论文也是层出不穷&#xff0c;本文将聚焦于各种最新的视觉trans…

mysql 分析查询语句,MySQL教程之SQL语句分析查询优化

怎么获取有功能问题的SQL1、经过用户反应获取存在功能问题的SQL2、经过慢查询日志获取功能问题的SQL3、实时获取存在功能问题的SQL运用慢查询日志获取有功能问题的SQL首要介绍下慢查询相关的参数1、slow_query_log 发动定制记载慢查询日志设置的办法&#xff0c;能够经过MySQL指…

树莓派摄像头基础配置及测试

树莓派摄像头基础配置 step 1 硬件连接 硬件连接&#xff0c;注意不要接反了&#xff0c;排线蓝色一段朝向网口的方向。&#xff08;笔者的设备是树莓派4B&#xff09; step 2 安装raspi-config 安装 raspi-config raspi-config在raspbian中是预装的&#xff0c;而在kali、…

使用百度云智能SDK和树莓派搭建简易的人脸识别系统 Python语言版

硬件 树莓派4B一个CSI摄像头一个 笔者使用的是树莓派4B和CSI摄像头&#xff0c;但是树莓派3和USB摄像头等相似设备均可。 百度云智能设置 Step 1 登录 百度云智能 网址https://cloud.baidu.com/ 首先登录百度账号&#xff0c;与百度云、百度贴吧等互通&#xff0c;可直接…

xp搭建 php环境,windows xp 下 LAMP环境搭建

1. apache安装步骤如下图在浏览器中输入&#xff1a;localhost&#xff0c;出现下面页面说明已成功安装apache。2. mysql安装如下图显示在运行里面输入cmd &#xff0c;然后连接测试mysql &#xff0c;如图所示&#xff1a;3. php安装(1)将php压缩包解压到安装路径中的php目录…