Web服务初探:用Demo学Web服务系列(3)——用C/S程序调用Web服务

简介:
  从Visual Studio.Net2003开始,微软的.Net开发平台就吸引了很多的编程的专业人员和爱好者。当微软的Visual Studio.Net2005一面世,世界为之再次一惊,真的可以说是“取其精华,去其糟粕”了。当然新的成长也会带来新的问题,但是总体来说是在前进着的。好了,废话也不多说了,来用这个非常方便的.Net平台来开发这个Demo吧!
        我们在《 Web服务初探:用Demo学Web服务系列(2)——编写一简单的Web服务 》已经开发出了一个简单的WebService,名为MyServiceClass。在这个随笔中,我们就来讲解如何调用这个外部的WebService(有的地方也把外部的WebService叫做远端WebService)。
        下面是我的开发环境配置:
操作系统:WindowsXP(已安装了IIS)
开发工具:Microsoft Visual Studio.Net2005
开发所用语言:Visual C#

        这里我们假设您已经刚刚建立好了一个Windows应用程序工程,其名称为“WindowsPro”,并将工程中默认的窗体名称“Form1”改为“Login.cs”,那么Login窗体的其他属性如下(需要更改的属性):
BackColor = 0, 192, 192;(Name) = Login;FormBorderStyle = FixedSingle;MaximizeBox = False;MinimizeBox = False;StartPosition = CenterScreen,然后在窗体上放置三个Label、两个TextBox和两个Button,分别设置其属性后,如下图:
下面就是一个关键部分了,右击工程名称选择“添加Web引用”,在弹出的窗口中选择“本地计算机的Web服务”后,会列出所有在您计算机上能找的WebService,选择并点击上一篇随笔中定义的MyServiceClass,在新出的窗口中将Web引用名更改为“MyServ”,点击“添加引用”。这样在工程的Web References文件夹中会添加一个MyServiceClass的代理,名为“MyServ”。
        添加完WebService的代理后,我们就可以在程序中使用了,下面看看上面窗体的代码如下:
 1 using  System;
 2 using  System.Collections.Generic;
 3 using  System.ComponentModel;
 4 using  System.Data;
 5 using  System.Drawing;
 6 using  System.Text;
 7 using  System.Windows.Forms;
 8
 9 namespace  WindowsPro
10 {
11    public partial class Login : Form
12    {
13        public Login()
14        {
15            InitializeComponent();
16        }

17
18        private void Btn_Login_Click(object sender, EventArgs e)
19        {
20            MyServ.MyServiceClass MyWebServ = new MyServ.MyServiceClass();
21            bool LoginOK = MyWebServ.Login(this.tB_UserName.Text, this.tB_PassWord.Text);
22            if (LoginOK)
23            {
24                MessageBox.Show("用户名和密码正确!");
25            }

26            else
27            {
28                MessageBox.Show("用户名和密码错误!");
29            }

30        }

31
32        private void Btn_Close_Click(object sender, EventArgs e)
33        {
34            this.Close();
35        }

36    }

37}
其中的第18行“MyServ.MyServiceClass MyWebServ = new MyServ.MyServiceClass();”是实列化MyServiceClass代理类,以便在下面的代码中调用MyServiceClass中的方法,在第21行“bool LoginOK = MyWebServ.Login(this.tB_UserName.Text, this.tB_PassWord.Text);”中调用了MyServiceClass中的Login方法,MyWebServ生成Soap消息后发送到服务器端验证所输入的用户名和密码是否正确,并返回结果。大家可以运行一下这个程序,输入正确的用户名“Micky”和密码“micky0”测试一下,再输入一个其他的用户名和密码测试一下。
         这里简要解释一下调用机制:Login方法中的两个参数(从this.tB_UserName.Text和this.tB_PassWord.Text中获得)通过MyServiceClass的代理类MyServ生成一个Soap消息,将这个Soap消息通过Http协议发送给服务器端的MyServiceClass,而服务器端的MyServiceClass解析Soap消息后调用相应的方法执行,并将方法返回的值再由MyServiceClass生成一个Soap消息通过Http协议发送给调用的客户端,当调用的客户端MyServiceClass的代理类MyServ接受到这个消息,解析出里面返回的值,赋值给变量bool LoginOK。
        由上面说的可以看出我们必须知道每个调用的方法所要传入的参数类型和方法所要返回值的类型。
        今天我们通过一个Windows应用程序的用户登录窗口实现了一个简单的C/S程序调用WebService。下一篇随笔我们还是要用到MyServiceClass这个服务,并将修改其中的Login方法,再来讲解使用此应用程序如何再次调用修改后的MyServiceClass服务。



本文转自刚刚博客园博客,原文链接:http://www.cnblogs.com/lijigang/archive/2006/10/31/545049.html,如需转载请自行联系原作者
相关文章
|
30天前
|
网络协议 Java Nacos
nacos常见问题之在web界面 上下线服务时报错 400如何解决
Nacos是阿里云开源的服务发现和配置管理平台,用于构建动态微服务应用架构;本汇总针对Nacos在实际应用中用户常遇到的问题进行了归纳和解答,旨在帮助开发者和运维人员高效解决使用Nacos时的各类疑难杂症。
29 0
|
30天前
|
监控 Serverless 测试技术
Serverless 应用引擎常见问题之做的web服务计费如何解决
Serverless 应用引擎(Serverless Application Engine, SAE)是一种完全托管的应用平台,它允许开发者无需管理服务器即可构建和部署应用。以下是Serverless 应用引擎使用过程中的一些常见问题及其答案的汇总:
401 3
|
1月前
|
JSON API 数据库
解释如何在 Python 中实现 Web 服务(RESTful API)。
解释如何在 Python 中实现 Web 服务(RESTful API)。
25 0
|
1月前
|
缓存 关系型数据库 API
后端开发:构建高效、可扩展的Web应用程序的关键
后端开发:构建高效、可扩展的Web应用程序的关键
20 0
|
5天前
|
SQL 安全 Go
如何在 Python 中进行 Web 应用程序的安全性管理,例如防止 SQL 注入?
在Python Web开发中,确保应用安全至关重要,主要防范SQL注入、XSS和CSRF攻击。措施包括:使用参数化查询或ORM防止SQL注入;过滤与转义用户输入抵御XSS;添加CSRF令牌抵挡CSRF;启用HTTPS保障数据传输安全;实现强身份验证和授权系统;智能处理错误信息;定期更新及审计以修复漏洞;严格输入验证;并培训开发者提升安全意识。持续关注和改进是保证安全的关键。
11 0
|
21天前
|
数据采集 Java API
python并发编程: Python使用线程池在Web服务中实现加速
python并发编程: Python使用线程池在Web服务中实现加速
18 3
python并发编程: Python使用线程池在Web服务中实现加速
|
24天前
|
前端开发 JavaScript 数据管理
描述一个使用Python开发Web应用程序的实际项目经验,包括所使用的框架和技术栈。
使用Flask开发Web应用,结合SQLite、Flask-SQLAlchemy进行数据管理,HTML/CSS/JS(Bootstrap和jQuery)构建前端。通过Flask路由处理用户请求,模块化代码提高可维护性。unittest进行测试,开发阶段用内置服务器,生产环境可选WSGI服务器或容器化部署。实现了用户注册登录和数据管理功能,展示Python Web开发的灵活性和效率。
14 4
|
1月前
javaWeb服务详解(含源代码,测试通过,注释) ——web.xml
javaWeb服务详解(含源代码,测试通过,注释) ——web.xml
7 0
|
1月前
|
XML JSON API
通过Flask框架创建灵活的、可扩展的Web Restful API服务
通过Flask框架创建灵活的、可扩展的Web Restful API服务
|
1月前
|
SQL 安全 测试技术
如何在 Python 中进行 Web 应用程序的安全性管理,例如防止 SQL 注入?
如何在 Python 中进行 Web 应用程序的安全性管理,例如防止 SQL 注入?
15 0