为Microsoft .NET做好准备
个复选框(CheckBox)。
因为SOAPCall函数是在ROPE.bas模块中实现的,对WebServices的调用过程非常简单。
让我们更深入地看一看ROPE.bas模块。以下是一些进行实际SOAP调用的代码(节选自SOAPCall函数):
'SetPayload
lsRequest=lsRequestvbCrLf
lsRequest=lsRequest
/envelope/SOAP:encodingStyle=http://schemas.xmlsoap.org/soap
/encoding/>vbCrLf
lsRequest=lsRequest
lsRequest=lsRequestMethod>vbCrLf
lsParameterOrder=GetParameterOrder(psServicesDescription,Method)
IflsParameterOrder>Then
lasParameterOrder=Split(lsParameterOrder,)
Fori=0ToUBound(lasParameterOrder)
lsRequest=lsRequestlasParameterOrder(i)>CStr(Arguments(i+1))
vbCrLf
Nexti
EndIf
lsRequest=lsRequestvbCrLf
lsRequest=lsRequest
lsRequest=lsRequest
'GetListener
lsListener=GetListener(psServicesDescription)
'CreateXMLHTTPobject
SetloXMLHTTP=CreateObject(Microsoft.XMLHTTP)
'OpenURLtoListener
loXMLHTTP.OpenPOST,lsListener,False,,
'Setheaderinfo
loXMLHTTP.setRequestHeaderSOAPAction,Method
loXMLHTTP.setRequestHeaderContent-Type,text/xml
'MakerequesttoSOAPservice/method
loXMLHTTP.SendlsRequest
'IfOK,getresponse
IfLen(loXMLHTTP.ResponseXML.XML)>0Then
lsResponse=loXMLHTTP.ResponseXML.XML
SOAPCall=GetReturnValue(lsResponse,Method)
Else
MsgBoxloXMLHTTP.ResponseText
EndIf
代码说明:
lsRequest变量被实际的请求负载(使用XML格式)所填充。除了方法名和参数值以外,内容主要是硬编码的XML文本。GetParameterOrder函数抽取出了参数和它们各自的顺序,以便以正确的顺序接收各个参数。
GetListener函数可以取出Web地址,也就是URL(UniversalResourceLocator,通用资源定位符),来“侦听”WebService。侦听程序是一个Web页面,请求将被发送到这个页面上,该页面使用服务描述语言定义。它通常上是一个ASP(ActiveServerPages)页面,但是使用一个更有效的ISAPI(InternetServerApplicationProgrammingInterface,Internet服务器应用程序编程接口)。
我目前正在使用XMLHTTP进行实际调用,您可以在所有PocketPC上找到该组件。
GetReturnValue函数负责从响应负载(XML格式)中取出返回值。如果发生错误,返回值为错误代码。
虽然没有在上面的代码中显示,但大多数子函数都使用XMLDOM组件(可在所有PocketPC上找到该组件)分析响应XML字符串。而且即便是ROPE.bas模块没有实现所有SOAPToolki所能够实现的所有ROPE功能,但它提供了最重要的大部分功能--足以使您调用WebServices。
如果您希望了解更多详细信息,我建议您认真阅读完整的示例代码。
运行服务
好了,我已经完成了使WebServices开始工作所需的一些基础工作。现在,要由您来完成最有意思的部分:创建一个使用WebServices的出色程序。目前,Internet上还没有太多的WebServices供我们使用,所以您必须自己实现一些服务。但是,我知道Microsoft提供了一个叫做TerraService的WebServices,它可以将动态地图发送到您的应用程序之中。此外,您开可以在网上找到一个利用VisualStudio.NETBeta1创建的示例程序。
如果您想对新出现的WebServices保持跟踪,请访问MicrosoftUDDI(UniversalDescription,DiscoveryandIntegration)站点。UDDI的目标是创建一个全球化的WebServices存储库,您可以使用它查找所需的功能和服务--甚至是来自某个应用程序的实时服务,包括Microsoft、IBM、Sun、Oracle在内的主要厂商和其它100多家厂商都支持UDDI。
如果您决定在Internet上发布某个Web服务,请及时通知我--我想先试试它们!
未来会怎样
我相信在不远的将来,所有的.NET特性都将在PocketPC上得以实现。随后,对WebServices的支持将集成到操作系统和开发工具之中。调用WebServices将像调用本地组件那样容易,大多数应用程序将通过集成多个服务进行构建。第一次WebServices浪潮预计将出现在公司内部,企业将来自多个系统的服务集成到一个应用程序之中,随后的发展趋势则是通过Internet将来自多个服务提供商的多个服务完全集成在一起。
相关链接
如果您想了解同.NET有关的更多信息,请访问Microsoft.NET页面。
如果您想了解同SOAP有关的更多信息,请访问MSDNSOAP开发资源页面。
如果您想了解同ROPE有关的更多信息,请访问MSDNMagazine文章“WebService开发:立即上手使用SOAPToolkitforVisualStudio”。
如果您想同PC上
- STM32笔记之十八:一定要重视准备工作!(11-27)
- 学习单片机的准备工作(11-22)
- 平凡单片机教学——准备工作(11-22)
- 学单片机的准备工作(04-03)
- 关于使用虚拟机嵌入式Linux开发前的必要准备(08-28)
- Windows CE 进程、线程和内存管理(11-09)