Welcome

首页 / 软件开发 / VFP / Visual FoxPro 7与Web Service

Visual FoxPro 7与Web Service2007-05-08说在前面

本文的实验必须在连接Internet的前提下进行!

本文关于Web Service的定义部分参阅了台湾基峰资讯股份有限公司的《C# & ASP.NET》一书。

Visual FoxPro 7全面支持Web Service

Visual FoxPro 7对Web Service有特别的支持,这是Visual FoxPro 7的一大卖点,也是Visual FoxPro 作为微软.Net构架下的一种高效开发工具的显著标志(注意:Visual FoxPro不是.Net 语言,但它是.Net构架下的工具)。Visual FoxPro 7对Web Service的支持主要体现在两个方面:开发Web Service,还有就是开发Web Service的客户(client)端工具。本文只对Visual FoxPro 7在Web Service的客户端应用作简单探讨,关于开发Web Service的内容将留待以后专题讨论。

一个简单的例子

这个例子中我们将使用由著名的Visual FoxPro的第三方产品供应商West-Wind公司开发的foxcentral,它提供关于Fox的新闻服务。在http://www.foxcentral.net 中有详细的信息。

在IntellSense Manger中注册Web Service

我提到过Visual FoxPro 7对Web Service有特别的支持,这句话说得明了些就是:Visual FoxPro 7封装了微软的 SOAP 组件,具体的大家可以参看:_webservices.vcx(Home()+"ffc\_webservices.vcx")。Web Service 通过 SOAP 协议来传递信息,SOAP就是Http与XML的结合体,微软所有的工具访问Web Service都要使用SOAP组件。在Visual FoxPro 中可以用访问COM组件的方式使用SOAP,但这样不方便,微软特意二次封装了SOAP。

打开Tool菜单->选择IntelliSense Manager ->Types页框(如图1)->按动“Web Services”按钮:

(图1)

(图2)

在图2中,输入“Web Service Name”以及“WSDL URL Location”的内容。输入完毕后,按“Register”,稍后系统会提示注册成功!

轻松的代码历程

新建一个 PRG 文件,先定义一个foxcentral类的变量,具体如下:

输入如下命令,并按回车(一定要回车):

LOCAL Fox as foxcentral

这个时候,奇妙的事情出现了:Visual FoxPro 7会自动产生一连串的语句。

具体如下:

LOCAL loWS
loWS = NEWOBJECT("Wsclient",HOME()+"ffc\_webservices.vcx")
loWS.cWSName = "foxcentral"
Fox = loWS.SetupClient("http://www.foxcentral.net/foxcentral.wsdl", "foxcentral", "foxcentralSoapPort")

看到了吗——建立了 "Wsclient" 类的实例“loWS”,“loWS”又建立了对"http://www.foxcentral.net/foxcentral.wsdl"的引用。

使用这个Web Service

这个Web Service 有好多接口,我们只是用GetItems方法,它返回的是一个XML的字符串,内容就是自某日以来的新闻。Visual FoxPro 7提供了对XML的内置支持,我们可以通过XMLTOCURSOR()函数将XML字符串转换为Visual FoxPro 本地光标,具体如下:

XMLTOCURSOR(Fox.GetItems({^2001-01-01},0,0,"ALL"),"Fox")
BROWSE

好了,实验做完了。

总结所有代码,如下:

LOCAL Fox as foxcentral
LOCAL loWS
loWS = NEWOBJECT("Wsclient",HOME()+"ffc\_webservices.vcx")
loWS.cWSName = "foxcentral"
Fox = loWS.SetupClient("http://www.foxcentral.net/foxcentral.wsdl", "foxcentral", "foxcentralSoapPort")
XMLTOCURSOR(Fox.GetItems({^2001-01-01},0,0,"ALL"),"Fox")
BROWSE

其他的Web Service资源

Web Service作为的新技术,应用实例不是很多,大家可以访问http://www.xmethods.com/了解更多的Web Service,选一个喜欢的,调用一下,感受新技术的浪潮!