VB.net 2010 视频教程 VB.net 2010 视频教程 python基础视频教程
SQL Server 2008 视频教程 c#入门经典教程 Visual Basic从门到精通视频教程
当前位置:
首页 > 编程开发 > C#编程 >
  • c#教程之基于.Net的Web服务客户端程序

本站最新发布   Python从入门到精通|Python基础教程
试听地址  
https://www.xin3721.com/eschool/

13.1 基于.Net的Web服务客户端程序

Web服务客户端程序是用来调用服务器端的Web服务方法,前边使用浏览器调用Web服务方法,只能算做一种测试,通过这种测试,可以验证Web服务方法的正确性,发现错误。作为客户端程序,无论在何处,采用那种操作系统,希望只要知道Web服务的所在网址,就可以调用其相关Web服务方法。Web服务客户端程序一般应在Web网上的另一台计算机中,单做实验或学习,也可以和Web服务在同一台计算机中。本节介绍如何实现基于.Net的Web服务客户端程序。

13.3.1      Web服务客户端程序代理类

Web服务客户端程序是用http和SOAP协议来调用远程的Web服务方法,因此,Web服务客户端程序必须把程序的调用及其参数转化为SOAP协议,传送到Web服务。但这个工作比较繁琐,程序员希望采用象普通编程语言调用一个方法那样调用Web方法。.NET Framework的SDK提供了一个程序WSDL.EXE,可以自动为Web服务客户端程序生成一个代理程序,该代理程序的功能是,Web服务客户端程序用一般程序语言那样调用Web服务方法,代理程序负责转换为SOAP协议,发送到Web服务方法,由代理程序负责获得Web服务方法返回的数据,由于这些数据也用SOPA协议表示,也要由代理程序转换为转换为一般程序语言能够理解的形式,传送给Web服务客户端程序。下边介绍生成代理程序的具体方法。WSDL.EXE必须在控制台界面下使用,使用的格式如下:
WSDL /l:C# /OUT:Hello.cs /protocol:soap http://LocalHost/Hello.asmx?WSDL
其中,/l参数指定编制Web服务客户端程序使用的语言,可以是vb、C#和Jscript,默认值为C#;/OUT参数指定生成的代理类文件的路径和文件名,默认值和Web服务ASMX文件同名,扩展名为参数/l指定的语言的扩展名;参数/protocol指定调用Web服务方法使用的协议,可以是HTTP-GET、HTTP-POST和SOAP协议;http://后边是Web服务ASMX文件的URL。WSDL运行的结果是生成一个Web服务客户端程序代理类的源程序。有了源程序,还要编译源程序生成dll文件,格式如下:csc /t:librrary hello.cs。把生成的hello.dll文件存到Web服务客户端程序项目所在目录的子目录bin下,这个代理类就可以被项目的其它成代码使用了。

13.3.2      HTTP-GET、HTTP-POST和SOAP协议

当构造一个XML Web服务时,它自动支持客户端使用SOAP、HTTP-GET和HTTP-POST协议通讯。HTTP-GET和HTTP-POST支持使用URL编码的变量名/变量值对来传送消息,支持这两个协议的数据类型没有支持SOAP协议的数据类型丰富。SOAP是一个简单的、重量轻的基于XML的协议,用于交换Web上的结构化的和模式化的信息。SOAP的总体设计目标是使它保持尽可能的简单,并且提供最少的功能。这个协议定义了一个不包含应用程序或传输语义的消息框架。因此,这个协议是模块化的并且非常利于扩展。在SOAP中,使用XML把数据传送到XML Web服务或从XML Web服务取回消息,你可以使用支持丰富的数据类型集。
更多SOAP规格的信息,请看W3C Web站点(http://www.w3.org/TR/soap)。

13.3.3      使用代理类的Web服务客户端程序

(1)控制台应用程序
using System;
class Welcome;
{
static void Main()
{
string s;
int x,y,z;
Console.WriteLine("Please enter first number:");
s=Console.ReadLine();
x=Convert.ToInt(s);
Console.WriteLine("Please enter second number:");
s=Console.ReadLine();
y=Convert.ToInt(s);
Hollo h1=new Hollo();//代理类对象
z=h1.hello(x,y);//调用Web服务方法
Console.WriteLine("sum:={0}",z);
}
}
(2)Windows应用程序
 
(3)ASP.Net应用程序
 
 

13.3.4 Visual Studio.Net建立Web服务客户端程序

使用Visual Studio.Net很容易建立Web服务客户端程序,这个客户端程序不必一定和Web服务在同一台计算机中,可以在任意一台Internet网中的计算机中。下边是具体步骤:
(1)  打开Visual Studio.Net,新建windows应用程序项目,命名为AddServiceClient,在窗体中增加一个按钮用来调用Web服务的Web方法,三个文本框,两个用来输入两个加数,另一个用来显示调用Web服务的Web方法后返回的结果。
(2)  建立Web服务客户端程序一般要建立一个代理。选择菜单项”项目”|/”添加Web引用”,在弹出的对话框中的地址栏中输入Web服务的URL,例如Web服务所在的计算机的IP地址是202.206.96.20,Web服务的文件Service1.asmx在网站宿主目录下的子目录webserver中,地址为:http://202.206.96.20/webserver/Service1.asmx。按回车键,出现添加Web引用对话框,如图:单击添加引用按钮,在解决方案资源管理器中,可以看到一个新的引用,以及从Web服务端发到客户端的DISCO和WSDL文档。在解决方案资源管理器中,还可以看到新创建的类,这个类就是Web服务客户端程序的代理程序,该类的用途是把Web服务客户端程序调用Web服务方法转换为SOAP格式。
(3)  为按钮增加事件函数如下:
 
天出的对话框中再加入一个system.web.webservices的引用,在列表中有。在form1.cs里,加入
using  System.Web.Services;
using  webserver;

然后在
private  System.Windows.Forms.Button  button1;
private  System.Windows.Forms.TextBox  textBox1;
后面,插入
private  webserver.service1  Client
建立一个service1的实例。双击按钮,代码如下:
private  void  button1_Click(object  sender,  System.EventArgs  e)
{
Client  =new  Service1();
string  name;
name=Client.show("龙卷风.NET");
textBox1.Text=name;
}
按F5,运行项目,点击按钮,文本框中显示
http://www.ourfly.com欢迎龙卷风.NET


2. Asp.NET  web窗口的测试
方法与上面的一模一样,添加引用,建立service1的实例
在此不在细说。
3.在VB中测试
这个就要相对来说复杂一些
首先在vb中建立一个”标准EXE”的项目。添加引用:Microsoft  Soap  Type  library。注意:如果没有安装Microsoft  Soap  Toolkit,是没有这个类型库的。
可以在http://www.ourfly.com中下载。
添加一个text
Private  Sub  Form_Load()
        Text1.Text  =  add()
End  Sub

Public  Function  Add()  As  String
Dim  objSoapClient  As  New  SoapClient
        objSoapClient.ClientProperty("ServerHTTPRequest")  =  True
Call  objSoapClient.mssoapinit("http://localhost/webserver/service1.asmx?WSDL",  "Service1",  "Service1Soap")
这句也可以
objSoapClient.mssoapinit("http://localhost/webserver/service1.asmx?WSDL")

        Add  =  objSoapClient.Show("龙卷风.NET")
End  Function

相关教程