分享
 
 
 

利用FrontPage使用XML WebService

王朝html/css/js·作者佚名  2006-11-24
窄屏简体版  字體: |||超大  

XML Web Service

Microsoft? .NET Framework 最令人激动的一点是包含了可扩展标记语言 (XML) Web Service。Web 服务允许应用程序间以基于标准的方式来通信和交换信息。Microsoft 的 Web 服务的实现有许多内在的好处。使用超文本传输协议 (HTTP) 和传输控制协议/Internet 协议 (TCP/IP),可以以 XML 格式交换信息。因此,Web 服务使用现有结构,可以在现有环境中方便地实现。

本文中,我们将使用 Microsoft GotDotNet Web 站点上的 EightBall Web 服务。我们将创建一个 Web 页,该页将向 EightBall Web 服务发送请求。EightBall Web 服务将接受并处理请求,并发回一个响应,可以在我们的 Web 页上显示该响应。这个使用 Web 服务的响应的过程就是所谓的“使用”Web 服务。

使用 Web 服务的要求

要使用 Web 服务,必须具有几个组件。如果您使用的是 Microsoft Visual Studio? .NET,那么这些组件会自动安装到合适的位置。而为了实现本文的目标,我们将采用 Microsoft FrontPage? 的 Web 站点创建和管理工具来使用 Web 服务。

要利用 FrontPage 来使用 Web 服务,您需要具备:

1 Microsoft .NET Framework 软件开发工具包 (SDK)

2 Microsoft Internet Information Services (IIS,Windows? 2000 Server 操作系统内置的 Web 服务器)

3 Web 服务代理

4 ASP.NET Web 窗体

Microsoft .NET Framework SDK

Microsoft .NET Framework 提供了用于 Microsoft .NET 平台的编程模型。它允许我们创建完善的 Web 服务和应用程序。.NET Framework 允许创建 ASP.NET 页,该页是使用 EightBall Web 服务时所必需的。要完成本文所述的这些步骤,您需要具有 .NET Framework SDK。

Microsoft Internet Information Services

我们必须具有 Web 服务器,而且 Web 服务器必须支持 ASP.NET。可以在 Windows 2000 或 Windows XP 上使用 Microsoft Internet Information Services。可能还需要安装必要的安全更新。

如果在安装了 .NET Framework SDK 之后安装 IIS,您需要运行 .NET Framework 目录中的 Aspnet_regiis.exe 来安装 ASP.NET 支持。

Web 服务代理

客户端和 Web 服务之间使用简单对象访问协议 (SOAP) 消息来通信。详细信息请参阅 SOAP 站点。Web 服务代理负责形成 SOAP 消息并通过网络发送这些消息。这使得使用 Web 服务异常容易,因为无需将参数映射给 XML 元素。Web 服务代理包括本地 Web 服务器上的动态链接库 (DLL)。使用 .NET Framework SDK 附带的名为 WSDL.exe 的实用程序,可以生成 Microsoft Visual Basic? .NET 或 C# 的源代码文件,然后使用该文件来编译 Web 服务代理。这是非常容易实现的,稍后我们将进行更加详细的说明。

ASP.NET Web 窗体

我们需要为用户提供一种向 EightBall 服务提问的方式。我们将使用 ASP.NET Web 窗体来实现这一目的。因为 FrontPage 不具备在用户界面中生成 ASP.NET 组件的能力,我们将在 HTML 视图中通过手动编码生成 Web 窗体。

为使用 Web 服务做准备

如果您已经安装了 Microsoft .NET Framework SDK 和 Internet Information Services,我们就可以马上探究如何使用 EightBall Web 服务了。以下是使用 Web 服务需要采取的步骤:

1. 检查 Web 服务。

2. 生成源代码文件。

3. 编译 Web 服务代理。

4. 设计 ASP.NET 界面。

5. 连接 Web 服务。

6. 复制代理。

7. 测试 ASP.NET 应用程序。

检查 Web 服务

为了检查 Web 服务和查看其提供的信息类型,我们浏览到 Web 服务入口点。该特定 Web 服务的链接是 http://www.gotdotnet.com/playground/services/EightBall/eightballws.asmx。如果您浏览至该 URL,将会看到该 Web 服务所支持的操作的列表。本例中,您将会看到指向 Ask 操作的链接。

图 1:用于 Ask 操作的 HTTP Post 信息如果单击指向 Ask 操作的链接,将会看到 SOAP 请求和 Web 服务响应的实例。如果检查该请求和响应,将会发现 Ask 操作要求传递给它一个字符串(注意 HTTP POST 段中的“psQuestion=string”文本)并返回一个字符串。该页上包括一个文本框,可以在其中键入问题并接收来自 EightBall Web 服务的 XML 格式的回答。要在 FrontPage 中设计界面来使用该 Web 服务,需要使用该信息。通过检查 Web 服务入口点的信息,我们断定需要设计一个窗体,窗体上要有一个文本框用于输入问题,并且要有一个按钮用来向 Web 服务提交问题。然后需要提供一个页面元素来包含从 Web 服务返回的回答。以后我们将深入讨论。现在,我们需要生成源程序代码,用来编译 Web 服务代理类。生成源代码文件用于 Web 服务的实际 .NET 程序集驻留在装载了该 Web 服务的 Web 服务器上。然而,客户端的代理类负责为 Web 服务创建格式正确的 SOAP 请求。因此,我们需要在本地 Web 服务器上创建充当代理类的 .NET 程序集。使用 Microsoft 的 .NET Framework SDK 中提供的工具可以很容易地完成此操作。要生成代理类的源代码文件,我们将使用 Web 服务说明语言实用程序,即 WSDL.exe。您可以在安装了 .NET Framework SDK 的目录中找到该实用程序。(默认情况下,该实用程序将被安装在 c:\Program Files\Microsoft Visual Studio .NET\FrameworkSDK\Bin 文件夹中。)WSDL.exe 允许我们为代理类创建源文件。生成源文件之前,请在驱动器 C 的根目录中创建一个用于 Web 服务文件的目录。将该目录命名为 8Ball。创建该目录后,我们就可以生成使用 EightBall Web 服务所必需的文件了。要生成源代码文件:1. 单击“开始”,指向“程序”,指向“附件”,单击“命令提示符”打开命令提示符窗口。2. 转到包含 WSDL.exe 实用程序的目录。3. 在命令行中键入以下内容,然后按 ENTER 键:wsdl /l:VB /o:c:\8ball\8ball.vbhttp://www.gotdotnet.com/playground/services/EightBall/eightballws.asmx?wsdl在 WSDL.exe 中使用下面的开关来生成源文件:/l - 此开关指定源文件的语言。本例中,我们指定 Visual Basic 语言。也可以指定 CS (C#) 语言,这将生成 C# 源文件。/o - 此开关指定输出文件的名称。Visual Basic 源文件应该具有 .vb 文件扩展名。C# 源文件应具有 .cs 文件扩展名。注意:使用 /? 开关可以获得关于 WSDL 的详细信息。传递给 WSDL 的 URL 是指向 Web 服务合约的 URL。Web 服务合约是一个文档,列出了应该提供给该 Web 服务的信息类型和它将返回的信息类型。Web 服务合约的 URL 就是在 Web 服务入口点 URL 末尾附加 ?wsdl。现在我们已经成功地生成了用于编译 Web 服务代理类的 Visual Basic .NET 源代码文件。编译 Web 服务代理创建 Visual Basic .NET 源文件后,我们需要将其编译进 Web 服务代理中。要这样做,我们将使用随 .NET Framework SDK 附带的 Visual Basic .NET 编译器。要编译代理类,请在打开的命令提示符下键入:Vbc /t:library /out:c:\8Ball\8BallClient.dll/r:System.dll /r:System.XML.dll /r:System.Web.Services.dll c:\8Ball\8Ball.vb我们使用以下的开关来生成代理类:/t - 此开关指定要生成的程序集类型。本例中,我们要编译 DLL 文件,所以指定程序集类型为 library。/out - 此开关指定输出文件的名称。因为我们指定了 library 的程序集类型,因此输出文件名称必须具有 .dll 文件扩展名。/r - 此开关指定程序集的引用。本例中,我们引用三个 Microsoft .NET 命名空间,所有的 Web 服务代理客户端都需要这三个命名空间。它们是 System、System.XML 和 System.Web.Services 命名空间。编译器完成代理类的编译后,驱动器 C 的 8Ball 目录中就有了名为 8BallClient.dll 的文件。这就是代理客户端。稍后我们将把它移动到正确的位置。您可以关闭命令提示符窗口,我们将继续创建用于与 EightBall Web 服务进行交互的界面。设计 ASP.NET 界面现在我们已大体了解了需要创建的界面,并且已成功编译了 Web 服务代理类。下一步是创建 ASP.NET 窗体,用于与 EightBall Web 服务交互。设计 ASP.NET 界面之前,需要创建一个 FrontPage 项目。创建新的单页 Web 站点并命名为 8Ball。必须在安装了 ASP.NET 的 Web 服务器上创建该站点,这点很重要。创建了 8Ball 站点后,需要确保将其标记为应用程序的根。步骤如下:1. 单击“开始”,指向“设置”,单击“控制面板”来打开控制面板。2. 双击“管理工具”。3. 双击“Internet 服务管理器”(Windows 2000) 或“Internet Information Services”(Windows XP Professional)。4. 展开“默认 Web 站点”节点,以便看到 8Ball 站点。(在 Windows XP Professional 中,您需要展开“Web 站点”节点来找到“默认 Web 站点”节点)5. 右键单击 8Ball 节点并选择“属性”。6. 将打开“属性”对话框,并显示“目录”选项卡。如果没有,请单击“目录”选项卡。7. 在“应用程序设置”部分中,单击“创建”按钮将该站点设为应用程序的根。8. 单击“确定”。该 Web 站点现在已成为应用程序的根,我们可以继续创建 ASP.NET 用户界面了。用户界面中将使用三个 ASP.NET Web 窗体控件。TextBox 控件用于输入 EightBall Web 服务的问题,Button 控件用于初始化对 Web 服务的请求,而 Label 控件用于显示从 Web 服务收到的回答。所有这些控件都包含在 ASP.NET 窗体中。使用 Microsoft Visual Studio .NET 来设计 Web 窗体非常容易,只需要拖放窗体元素并在用户界面中设置这些元素的属性即可。本例中,我们没有使用 Visual Studio .NET,所以不得不通过手动编码生成窗体元素。创建 Web 窗体需要做的第一件事是创建 Web 窗体自身的代码。如果您熟悉超文本标记语言 (HTML) 的窗体代码,那么对该代码也一定很熟悉。打开 8Ball 站点的主页并切换到 HTML 视图。在现有的 标记中键入以下代码:<form runat="server"></form> 除了添加了 runat 属性以外,该代码与 HTML 窗体完全相同。runat 属性的值是 server,表示该窗体是 ASP.NET 服务器控件。这是 ASP.NET 的简单性的一个非常完美的示例。要使 HTML 元素成为 ASP.NET 服务器控件,只需添加 runat 属性并将其值设置为 server。此时,应保存本页面并继续以下步骤。将页面保存为 8ball.aspx。添加 ASP.NET Web 窗体控件创建窗体后,需要添加 ASP.NET Web 窗体控件。首先,添加 TextBox 控件。这是 Web 页用户输入 EightBall Web 服务问题的地方。要添加 TextBox 控件,请在开始和结束 标记之间添加以下代码:<asp:TextBox id="tbQuestion" runat="server"/>

如果您从来没有在 ASP.NET 中进行过编码,该代码对您来说可能很陌生。附加到控件名称之前的 asp: 表示这是一个 ASP.NET Web 窗体控件

将其余代码添加到页面中,窗体代码将如下所示:

<form runat="server">

<asp:TextBox id="tbQuestion" runat="server"/>

<asp:Button id="btnGo" runat="server"

Text="Submit Question" onClick="getAnswer"/><br><br>

<asp:Label id="lblAnswer" runat="server"/>

</form>您可能注意到在 FrontPage 的普通视图中看不到这些控件。这正是所希望的,因为这些是 ASP.NET Web 窗体控件,FrontPage 不能显示它们。连接 Web 服务如果复查已经添加的代码,会发现当单击按钮时,调用了名为 getAnswer 的过程。这是服务器端的过程,负责:创建代理客户端类的实例。调用 EightBall Web 服务的 Ask 函数并向其传递我们的问题。设置 Label 控件的文本以便显示从 Web 服务收到的回答。要创建该程序,在页面中 结束标记前添加以下代码:<script runat="server"> Sub getAnswer(sender as Object, e As System.EventArgs) Dim clsEightBall As EightBallWS = New EightBallWS Dim strAnswer As String strAnswer = clsEightBall.Ask(tbQuestion.Text) lblAnswer.Text = strAnswer End Sub</script> 大致地检查该代码。 <script> 标记是一个基本脚本标记,但向其添加 runat="server" 以后便可以在服务器上处理它。然后定义 getAnswer 过程。请注意这个程序需要两个参数:sender 和 e。这是 Microsoft .NET 事件处理程序所需要的签名。 接下来,创建代理客户端类的实例。我们怎么知道该类名为 EightBallWS?使用记事本检查用 WSDL 创建的 Visual Basic 源文件,会看到以下代码:Public Class EightBallWS 每个代理类都有一个与其相关的名称,并且就是创建该类的新实例时所使用的名称。我们称 EightBallWS 类的实例为 clsEightBall。该名称是任意选择的。 接下来,创建一个字符串值 (strAnswer) 来容纳 Web 服务返回的回答。请记住我们之前检查过 Web 服务,并曾确定有一个名为 Ask 的操作,该操作接受字符串参数并返回一个字符串。 然后,通过调用 Web 服务的 Ask 操作并将我们的问题传递给该操作,为 strAnswer 赋值。strAnswer = clsEightBall.Ask(tbQuestion.Text)

将问题传递给 Ask 操作的方式是:将之前创建的 TextBox Web 窗体控件 (tbQuestion) 的 Text 属性传递该操作。我们已经知道 Web 服务的 Ask 操作将答案作为字符串传回给我们。因此,执行了上面的行后,strAnswer 将包含从 Web 服务返回的问题答案组成的字符串。

剩下要做的事情就是显示我们检索的答案。要完成此操作,需

[1] [2] 下一页

 
 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
2023年上半年GDP全球前十五强
 百态   2023-10-24
美众议院议长启动对拜登的弹劾调查
 百态   2023-09-13
上海、济南、武汉等多地出现不明坠落物
 探索   2023-09-06
印度或要将国名改为“巴拉特”
 百态   2023-09-06
男子为女友送行,买票不登机被捕
 百态   2023-08-20
手机地震预警功能怎么开?
 干货   2023-08-06
女子4年卖2套房花700多万做美容:不但没变美脸,面部还出现变形
 百态   2023-08-04
住户一楼被水淹 还冲来8头猪
 百态   2023-07-31
女子体内爬出大量瓜子状活虫
 百态   2023-07-25
地球连续35年收到神秘规律性信号,网友:不要回答!
 探索   2023-07-21
全球镓价格本周大涨27%
 探索   2023-07-09
钱都流向了那些不缺钱的人,苦都留给了能吃苦的人
 探索   2023-07-02
倩女手游刀客魅者强控制(强混乱强眩晕强睡眠)和对应控制抗性的关系
 百态   2020-08-20
美国5月9日最新疫情:美国确诊人数突破131万
 百态   2020-05-09
荷兰政府宣布将集体辞职
 干货   2020-04-30
倩女幽魂手游师徒任务情义春秋猜成语答案逍遥观:鹏程万里
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案神机营:射石饮羽
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案昆仑山:拔刀相助
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案天工阁:鬼斧神工
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案丝路古道:单枪匹马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:与虎谋皮
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:李代桃僵
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案镇郊荒野:指鹿为马
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:小鸟依人
 干货   2019-11-12
倩女幽魂手游师徒任务情义春秋猜成语答案金陵:千金买邻
 干货   2019-11-12
 
推荐阅读
 
 
 
>>返回首頁<<
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有