专注收集记录技术开发学习笔记、技术难点、解决方案
网站信息搜索 >> 请输入关键词:
您当前的位置: 首页 > VFP

WebService解决方法

发布时间:2010-05-24 21:50:34 文章来源:www.iduyao.cn 采编人员:星星草
WebService
请问在VFP中如何调WebService,如何读取返回结果?

谢谢

------解决方案--------------------

VFP7-Web Service
作者:BOE
文章来源:www.boeworks.net
说在前面

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

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

什么是Web Service?

现在最流行的技术是什么?是JAVA,是.Net,还是其他什么?我觉得应该是Web Service技术了。

Web Service 提供一种简单同时具备弹性的程序设计模型,并采用现在流行的Internet 上的标准,避免开发人员在面临选择不同平台、操作系统及程序语言时的困扰与纷争。通过Web Service 的包装,系统开发与整合时不再为了到底是用哪一种程序设计模型、程序语言、操作系统、平台吹毛求疵地进行挑选。

基本上,Web Service将组件及服务通过Http、XML包装成一个可程序化的URI(universal resource identifier)地址,对象通过Web Service 的包装,程序设计时建立与使用一个对象就会像浏览一个网址一样简单。Web Service 的核心就是SOAP(Simple Object Access Protocol),一种简单的通讯协议,目的就是“Programming the Web”。

Web Service 提供一种可以通过标准Internet通讯协议存取应用程序组件的技术。开发人员可以自Internet上的网站查找相关的Web Services的描述既使用说明,使用这项Web Service服务的应用程序或用户所接受或传递的都是以XML各时表示的数据,对象调用或存取方式都是以开放的Internet通讯协议进行的。

所以Web Service 是:

一个通用的标准可以被用来描述数据,而且是中立于平台与语言的XML。

一种通用的通讯协议,而且是中立于平台与语言的SOAP。

一个通用的合约语言(contract language)用来描述Web Service ,例如:SDL(Service Description Language)。

Web Service 是微软.Net战略的重要组成部分,微软的目的就是要建立基于微软平台的跨平台应用——我们说过:Web Service以最通用、最简单的方式(中立的Internet的标准、中立的XML文档)处理、传递信息,作为信息的使用者,无论基于什么平台、只要能连接Internet、只要能识别XML(其实就是有特别格式的文本),就可以使用Web Service。做到:任何地点、任何时间、任何能上网的(Internetable)设备都可以使用Web Service提供的服务。

Visual FoxPro 7与Web Service

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”按钮:

输入“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
友情提示:
信息收集于互联网,如果您发现错误或造成侵权,请及时通知本站更正或删除,具体联系方式见页面底部联系我们,谢谢。

其他相似内容:

热门推荐: