.net WebService(二) 客户端向服务端传入参数的数据交互方式
2013-11-11 15:09
513 查看
接着上一章的内容,在上一章中我们知道了如何.net平台下去建立一个WebService,以及同步调用、异步调用、开线程异步调用三种客户端从服务端获取数据的方式,在本章了所要讲的,是如何将客户端的数据,传递给服务端,进行客户端和服务端的双相交互
输入以下代码
在服务端的WSDemo.asmx文件中输入以下代码
至此,服务端操作完毕
图10
在Index.aspx.cs中输入以下代码:
至此,客户端操作完毕,此时可发现在用户名和密码不对的情况下,浏览器所输入的值
至此,开线程异步客户端传参与服务器数据交互操作完毕
服务端
建立UserManager.cs类,添加using System.Web.Services.Protocols;命名空间,并使它继承自SoapHeader输入以下代码
public class UserManager:SoapHeader { public string Name { get; set; } public string Pwd { get; set; } private bool CheckUser(string n,string p) { if(Name == "aaa" && Pwd == "bbb") { return true; } else { return false; } } public bool CheckUser() { return CheckUser(Name, Pwd); } }
在服务端的WSDemo.asmx文件中输入以下代码
public class WSDemo : System.Web.Services.WebService { [WebMethod] public string HelloWorld() { return "Hello World"; } //标准一下CheckUser()方法使用哪个SoapHeader进行校验,客户端网站调用该方法时需要指定自己定义的SoapHeader内容 //这样,虽然CheckUser()并没有参数,但在在使用时,要先定义UserManager的SoapHeader的头,放在CheckUser中 public UserManager um; [SoapHeader("um")] [WebMethod(Description = "用户验证")] public bool CheckUser() { if (um.CheckUser()) { return true; } else { return false; } } }
至此,服务端操作完毕
客户端---同步方式
操作完服务端后,要在ServiceReference1上右击“更新服务引用”图10
在Index.aspx.cs中输入以下代码:
public partial class Index : System.Web.UI.Page { protected string stator = string.Empty; protected void Page_Load(object sender, EventArgs e) { using (ServiceReference1.WSDemoSoapClient wsc = new WSDemoSoapClient()) { //UserManager服务端中的类名 ServiceReference1.UserManager um = new UserManager(); um.Name = "aaa"; um.Pwd = "bbb"; stator = wsc.CheckUser(um)?"登录成功":"用户名或密码错误";//三目运算符,更据服务端返回值确定向浏览器输出内容 } Response.Write(stator); } }
至此,客户端操作完毕,此时可发现在用户名和密码不对的情况下,浏览器所输入的值
客户端---异步方式
将Index.aspx.cs中的代码修改为以下方式public partial class Index : System.Web.UI.Page { protected string stator = string.Empty; protected void Page_Load(object sender, EventArgs e) { using (ServiceReference1.WSDemoSoapClient client = new WSDemoSoapClient()) { //要执行的方法 client.CheckUserCompleted += new EventHandler<CheckUserCompletedEventArgs>(client_CheckUserCompleted); //为传参做准备,因为添加了“服务引用”所以在客户端也能点出服务端中公布的的方法来 ServiceReference1.UserManager um = new UserManager(); um.Name = "aaa"; um.Pwd = "bbb"; //开始执行 client.CheckUserAsync(um); } } //要执行的方法 void client_CheckUserCompleted(object sender, CheckUserCompletedEventArgs e) { stator = e.Result ? "登录成功" : "登录失败"; Response.Write(stator); } }
客户端---开线程的异步方式
将Index.aspx.cs中代码更改为以下形式public partial class Index : System.Web.UI.Page { protected string stator = string.Empty; protected void Page_Load(object sender, EventArgs e) { BackgroundWorker bw = new BackgroundWorker(); bw.DoWork += new DoWorkEventHandler(bw_DoWork);//指明线程要执行方法 bw.RunWorkerCompleted += new RunWorkerCompletedEventHandler(bw_RunWorkerCompleted);//获取从服务端中的返回值 bw.RunWorkerAsync();//开始执行 } //获取从服务端中的返回值 void bw_RunWorkerCompleted(object sender, RunWorkerCompletedEventArgs e) { stator = (bool)e.Result ? "登录成功" : "登录失败"; Response.Write(stator); } //指明线程要执行方法 void bw_DoWork(object sender, DoWorkEventArgs e) { //建立客户端和服务端的链接 using (ServiceReference1.WSDemoSoapClient client = new WSDemoSoapClient()) { //对服务端公布方法UserManager进行实例化并赋值 UserManager um = new UserManager(); um.Name = "aaa"; um.Pwd = "bbb"; //调用服务端方法,并传入参数 e.Result = client.CheckUser(um);//注意e.Result = ... } } }
至此,开线程异步客户端传参与服务器数据交互操作完毕
相关文章推荐
- Delphi客户端访问.NET Webserivce时遇到传入参数为空的问题解决!
- ext异步请求一个aspx/ashx/web service取得数据,服务端返回一个json.然后客户端接收并显示.
- Android客户端采用Http 协议Post方式请求与服务端进行数据交互
- Android客户端采用Http 协议Post方式请求与服务端进行数据交互
- .NET WebService 调试,允许通过IE输入参数的设置,允许Perl以Post方式调用的配置项
- .net WebService(一) 无传入参数WebService
- Android客户端采用Http 协议Post方式请求与服务端进行数据交互
- Android客户端采用Http 协议Post方式请求与服务端进行数据交互(转)
- Android客户端采用Http 协议Post方式请求与服务端进行数据交互
- [转]Net 下采用GET/POST/SOAP方式动态调用WebService C#实现
- Flex HttpService 方式与java交互(json数据类型)
- Android与服务器端数据交互(基于SOAP协议整合android+webservice)
- Android与服务器端数据交互(基于SOAP协议整合android+webservice)
- net web service 参数类型
- asp.net 数据层类 parameter参数访问方式
- web 前后台数据交互的方式
- Android与服务器端数据交互(基于SOAP协议整合android+webservice)
- ADO.NET Entity framework 中 实体的对应数据库中text类型的问题 (更新) :asp.net entity 传入的表格格式数据流(TDS)远程过程调用(RPC)协议流不正确。参数 3 ("@0"): 数据类型 0
- 总结ASP.NET MVC Web Application中将数据显示到View中的几种方式
- JAVAWEB开发之SpringMVC详解(二)——高级开发、数据回显、参数绑定集合、图片上传、json交互、validation校验、异常处理、RESTful支持、拦截器