.Net WebService简单学习

article/2025/10/12 19:53:38

一、什么是WebService

Web Service是一个使用开放的XML(标准通用标记语言下的一个子集)标准来描述、发布、发现、协调和配置这些应用程序,用于开发分布式的交互操作的应用程序。
Web Service技术, 能使得运行在不同机器上的不同应用无须借助附加的、专门的第三方软件或硬件, 就可相互交换数据或集成。

二、创建一个简单的WebService

首先新建一个ASP.NET空网站,然后在项目名称上右击添加新项,在Visual C#中找到Web服务(ASMX),修改名称为WebServiceTest.asmx,点击添加
在这里插入图片描述
在这里插入图片描述
这里我们可以看到,在解决方案资源管理器中,新增两个文件,一个.asmx文件,一个.cs文件,这两个都是WebService的必要文件,其中.asmx文件提供服务部分,.cs文件提供逻辑部分

在这里插入图片描述
这里我们打开WebServiceTest.cs文件,方法上面的特性[WebMethod]是用来声明一个web服务方法,可以供服务端调用,如果不想被服务端调用仅在该类内部使用可以不加

在这里插入图片描述
接下来运行该文件,在该页面直接运行不调试(Ctrl + F5),可显示该页面

在这里插入图片描述
点击HelloWorld可显示,一个调用按钮,点击调用,可显示XML格式的HelloWorld
在这里插入图片描述
在这里插入图片描述
然后打开WebServiceTest.cs文件,写一些方法

    [WebMethod]public int Plus(int a, int b){return a + b;}public int Minus(int a, int b){return a - b;}

然后再次打开运行不调试WebServiceTest.cs文件,这里Minus方法没有添加特性[Method],因此在运行时不显示
在这里插入图片描述
点击Puls,可以看到,像两个数相加的页面,任意输入两个数,点击调用可以看到相关结果
在这里插入图片描述
在这里插入图片描述
这里也可以直接在主页地址栏URL后面添加 ?op=方法名 跳转指定方法体
在这里插入图片描述
这里再添加一个方法

    [WebMethod]public List<UserInfo> Get(){return new List<UserInfo>(){new UserInfo() {id=101, name="莉莉", age=18, sex="女" },new UserInfo() {id=102, name="岚岚", age=18, sex="女" },new UserInfo() {id=103, name="安娜", age=18, sex="女" }};}

在浏览器地址栏URL后面添加 ?op=Get 点击调用,显示XML的数据

在这里插入图片描述
在这里插入图片描述

三、WebService的验证问题

1.使用SoapHeader进行验证

首先在WebServiceTest.cs文件里面新建一个用户信息类,包含用户的id,年龄,性别,名字等信息

/// <summary>
/// 用户信息
/// </summary>
public class UserInfo
{/// <summary>/// 用户ID/// </summary>public int id;/// <summary>/// 年龄/// </summary>public int age;/// <summary>/// 性别/// </summary>public string sex;/// <summary>/// 名字/// </summary>public string name;
}

然后再新建一个CustomSoapHeader类继承自SoapHeader,设置两个私有字段username,password,通过默认的构造函数和UserName、PassWord属性为其设置值,通过Validate方法验证用户名和密码

public class CustomSoapHeader : SoapHeader
{private string username = String.Empty;private string password = String.Empty;public CustomSoapHeader(){//这里的构造函数必须写}public CustomSoapHeader(string username, string password){this.username = username;this.password = password;}/// <summary>/// 获取或设置用户名/// </summary>public string UserName{get { return this.username; }set { this.username = value; }}/// <summary>/// 获取或设置用户密码/// </summary>public string PassWord{get { return this.password; }set { this.password = value; }}public bool Validate(){return this.username.Contains("s") && this.password.Contains("1");}
}

然后在WebServiceTest类中添加一个Get()方法

    public CustomSoapHeader customSoapHeader;[WebMethod][SoapHeader("customSoapHeader")]public List<UserInfo> Get(int m){if (this.customSoapHeader != null && this.customSoapHeader.Validate() && m > 0){return new List<UserInfo>(){new UserInfo(){ id=101, age=18, sex="女", name="李静怡"},new UserInfo() {id=102, age=18, sex="女", name="李静怡"},new UserInfo() {id=102, age=18, sex="女", name="李静怡"}};}elsethrow new SoapException("身份验证不通过", SoapHeaderException.ServerFaultCode);}

然后在新建一个ASP.NE空网站,然后在项目名上右击点击添加Web 窗体
在这里插入图片描述
在这里插入图片描述
然后在项目名上右击点击添加服务引用,在地址栏处输入上一个项目中WebServiceTest.cs文件在浏览器中的运行地址,这里前提需要保持另一个项目运行,然后点击转到,系统会默认找到一个服务,然后点击确定。如果更改WebServiceTest.cs中的方法,需在服务引用上右击更新服务引用,如果运行还抛出异常,就点击配置服务引用,同时可以更改集合类型,对var类型适用,然后点击确定。
在这里插入图片描述
配置服务引用
在这里插入图片描述
整个项目结构
![在这里插入图片描述](https://img-blog.csdnimg.cn/20210703181502846.png
点击Web.config查看配置信息
在这里插入图片描述
在Default.aspx的Page_Load方法中进行调用,测试时可打断点,调试查看值

    protected void Page_Load(object sender, EventArgs e){if (!IsPostBack){using (ServiceReference1.WebServiceTestSoapClient soapClient = new ServiceReference1.WebServiceTestSoapClient()){//string类型"Hello World"var result1 = soapClient.HelloWorld();//int类型2var result2 = soapClient.Plus(1, 1);//int类型0var result3 = soapClient.Minus(1, 1);//可以点击配置服务引用更改集合类型为System.Collections.Generic.Listvar result4 = soapClient.Get(new ServiceReference1.CustomSoapHeader(){UserName = "s110",PassWord = "123456"}, 1);}}}

这里服务端的调用也可以采用Web 引用,在项目名上右击,点击添加,添加服务引用,然后点击高级,然后点击添加Web 引用,输入上一个项目中WebServiceTest.cs文件在浏览器中的运行地址,点击 ->,设置 Web 引用名为WebReference,点击添加引用即可
在这里插入图片描述
这里ServiceReference1是服务引用,WebReference是Web 引用
在这里插入图片描述
接下来就用Web 引用简单试下

    protected void Page_Load(object sender, EventArgs e){if (!IsPostBack){#region Web 引用var webref = new WebReference.WebServiceTest();webref.CustomSoapHeaderValue = new WebReference.CustomSoapHeader(){UserName = "s110",PassWord = "123456"};//这里Get()方法的参数即WebService的参数,没有即没有参数,而服务引用至少有一个参数,并且该参数必须是继承自SoapHeader的实例,第二个及后面的参数即WebService的参数,没有就不写var result5 = webref.Get(1);#endregion}}

http://chatgpt.dhexx.cn/article/SjdWObqs.shtml

相关文章

java webservice 入门教程_WebService入门实例教程

什么是WebService 通过使用WebService&#xff0c;您的应用程序可以向全世界发布信息&#xff0c;或提供某项功能&#xff0c;它是基于Web的服务&#xff0c;通过Web进行发布、查找和使用。 WebService脚本平台需支持XMLHTTP。 HTTP协议是最常用的因特网协议。 XML提供了一种可…

idea使用xfire方式发布webservice教程

近日在熟悉webservice发布的过程&#xff0c;此处主要讲解xfire方式。 1.使用idea新建一个web项目 步骤1&#xff1a; 按照图中的指定序号建立对应的web项目即可。 步骤2&#xff1a; 填写组织ID和具体项目id&#xff0c;点击进行“下一步”即可。 步骤3&#xff1a; 设置相…

java发布webService服务教程

发布webService服务并使用soap UI测试 发布简单的webService服务同时发布多个webService接口使用SoapUI测试webService接口下载SoapUI并安装打开WSDL文件测试文件上传 示例源码 发布简单的webService服务 新建一个Maven项目pom引入 webService需要的依赖 <dependency>&…

WebService 教程(包含项目实践)

情景引入&#xff1a; 时间&#xff1a;早晨 8 : 00 am 小白&#xff1a;起床起床&#xff0c;&#xff0c;&#xff0c;公司又来需求了&#xff0c;你还在睡觉&#xff0c;快点起来~&#xff01; 我&#xff1a;大惊小怪&#xff0c;又怎么了呢&#xff1f;小白&#xff0c…

最详细的idea创建webservice教程

最详细的idea创建webservice教程 创建服务端 File->New Project 点击next&#xff0c;会自动生成demo将要发布的类加上WebService&#xff0c;方法加上WebMethod&#xff0c;设置服务发布address WebService() public class HelloWorld {WebMethodpublic String sayHello…

WebService简单入门

1. JAX-WS发布WebService 创建web工程 创建simple包&#xff0c;和server、client两个子包。正常情况下server和client应该是两个项目&#xff0c;这里我们只是演示效果&#xff0c;所以简化写到一个项目中&#xff1a; 1.1 创建服务类Server package simple.server;import ja…

WebService教程实例

一、准备工作 1、Myeclipse 2014 2、jdk8.0 二、创建服务端 1、创建【Web Service Project】&#xff0c;命名为【TheService】。 2、创建【Class】类&#xff0c;命名为【ServiceHello】&#xff0c;位于【com.hyan.service】包下。 3、编写供客户端调用的方法&#xff0c;即编…

Java小白翻身 - webservice教程2

来一个HelloWorld&#xff0c;SpringBoot发布WebService可简单啦。 1、搭建项目2、配置pom.xml3、建services服务包4、登陆接口类5、登陆接口实现类6、创建CXF配置类7、Parameter 0 of method errorPageCustomizer in ErrorMvcAutoConfiguration 异常解决8、访问webservice9、…

idea2021创建webservice教程

一、创建服务端 1、创建一个新的java工程 2、工程项目右键添加框架依赖 3、选择webservices 4、点击确定完成创建。创建后项目会添加相关依赖。以及测试服务类。 5、代码介绍 // 添加WebService注解 WebService() public class HelloWorld {// 方法添加WebMethod注解W…

WebService教程

最近在学习WebService&#xff0c;今天尝试用Eclipse的插件生成JAX-WS WebService&#xff0c;结果遇到了不少的问题啊&#xff0c;调试了大半天终于把程序跑通了。现在把步骤和问题记录一下&#xff0c;也为了以后遇到相同的问题时能够及时解决。首先利用Eclipse生成WebServic…

WebService入门教程(服务端发布WebService)

本篇内容过多&#xff0c;时间紧迫的朋友可以通过目录快速筛选自己想要看的内容&#xff0c;本人接触webservice也没多久&#xff0c;也处于学习阶段&#xff0c;如果有错误请指正&#xff0c;如果已经是大神请略过这篇文章&#xff0c;这篇文章不涉及webservice的底层原理&…

WebService最详细教程

WebService相关概念 基础概念 WebService是一种跨编程语言和跨操作系统平台的远程调用技术,就是说服务端程序采用java编写&#xff0c;客户端程序则可以采用其他编程语言编写&#xff0c;反之亦然&#xff01;跨操作系统平台则是指服务端程序和客户端程序可以在不同的操作系统…

webSerivce简明使用教程

茫茫人海千千万万&#xff0c;感谢这一秒你看到这里。希望我的文章对你的有所帮助&#xff01; 愿你在未来的日子&#xff0c;保持热爱&#xff0c;奔赴山海&#xff01; &#x1f440; 前言 因为前段时间&#xff0c;需要使用到webService来调用公司的其他系统api接口&#x…

WebService详细讲解

1 学习目标2 webservice 基本概念 2.1 什么是web服务2.2 简介2.3 术语 2.3.1 webservice开发规范2.3.2 SOAP 协议2.3.3 wsdl说明书2.3.4 UDDI2.4 应用场景2.5 优缺点 2.5.1 优点&#xff1a;2.5.2 缺点&#xff1a;2.6 面向服务架构SOA3 ApacheCXF 框架介绍 3.1…

11步教你入门webservice

新建立一个javaWeb项目&#xff0c;一个java类&#xff0c;如图&#xff1a; 1.具体很简单 首先要创建一个web工程 2、接下来我们就要将项目中的TestService的这个类生成WebService服务端&#xff0c;选择new Web Service&#xff0c;如图&#xff1a; 3 4.Next,选择jav…

php 实现分页功能(class封装了功能)

前言 分页是一个很常见的功能&#xff0c;我这里提供了分类类(class)&#xff0c;用于前端页面中的四个按钮&#xff1a; 首页下一页上一页尾页 上面的演示非常不直观&#xff0c;但足可以证明这个类可以完成分页功能。 完整的代码 附有非常详细的注释&#xff0c;但需要有…

PHP分页技术详解

直接上代码&#xff0c;注释很详细了。 <?php /** * php分页技术详解 * author jahng */header("Content-type: text/html; charsetUTF-8");echo<link rel"stylesheet" type"text/css" href"css.css" media"all" /&g…

PHP的分页处理

HTML页面&#xff1a; <div class"page"> {$data->render()|raw} </div> 控制器页面&#xff1a; $data ArticleInfo:: where(cate_id, $this->cid)->whereLike(title,%.$get.%)->paginate([ query>[cid>$this->cid], l…

php分页

这是学生信息管理每三条一页> <?phpfunction news($pageNum 1, $pageSize 3){$array array();$mysqlnew mysql();$rs "select * from user limit " . (($pageNum - 1) * $pageSize) . "," . $pageSize;$r $mysql->query($rs);while ($obj…

PHP-分页

1.6 分页 1.6.1 分析 -- 1、获取当前页码的数据 页码 SQL语句 1 select * from products limit 0,10 2 select * from products limit 10,10 3 select * from products limit 20,10 结论&#xff1a; $pageno&#xff1a;页码 $startno:起始位置 $pagesize10:页面大小…