欢迎来到天天文库
浏览记录
ID:42696924
大小:40.00 KB
页数:8页
时间:2019-09-20
《用VC++建立SOAP应用》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、用VisualC++建立SOAP客户端应用Soap是一个在信息交换中使用得非常广泛的协议,使用方便,并直接可与HTTP,SMTP等其它协议一起工作。本文讨论如何使用MicrosoftSOAPTookit的C++来建立一个简单的SOAP客户端应用。=========================================================一、先决条件:必须熟悉使用COM,特别要熟悉COM中的SmartPointers。我通过导入方法将COM接口转换成SmartPointers。系统必须安装了MicrosoftSOAPToolkit和Microsof
2、tXMLParser。文末参考一节介绍如何下载工具箱。文末附件可下载本文源程序。二、SOAP编程基础:下面开始介绍一个简单SOAP应用中所包含的类。在此之前,必需先导入所需的类型库,然后程序才能够使用SOAP的类。导入类型库:SOAP中使用的对象和接口都在mssoap1.dll文件中。这个文件在安装MicrosoftSOAPToolkit2.0时生成,存在路径:"C:ProgramFilesCommonFilesMSSoapBinariesMSSOAP1.dll"。用#import将该文件导入到程序中。类型库的内容在导入时被转换成COMsmartpointe
3、rs来描述COM接口。因为SOAP完全依赖于XML,因此必需用MicrosoftXMLParser来处理XML。MicrosoftXMLparser在msxml3.dll文件里。这个文件要在导入mssoap1.dll之前导入。#import"msxml3.dll"usingnamespaceMSXML2;#import"C:ProgramFilesCommonFilesMSSoapBinariesMSSOAP1.dll"exclude("IStream","ISequentialStream","_LARGE_INTEGER","_ULARGE_INTE
4、GER","tagSTATSTG","_FILETIME")usingnamespaceMSSOAPLib;上面这些代码是编写SOAP程序必需包含的。建立SOAP客户端应用有以下三步骤:1-指定和连接Web服务器。2-准备和发送消息。3-读取服务端返回的信息。下面是在基本SOAP客户端要使用到的类:1-SoapConnector:在客户/服务模式下,首先要做的事就是连接服务器。SoapConnector类执行客户端与服务端之间的消息传送协议。SoapConnector是一个抽象类,定义了协议执行的接口。事实上,SoapConnector类不定义执行某种特定的传送协议,
5、例如:MSMQ,MQSeries,SMTP和TCP/IP等。为简便起见,本文只说明使用HTTP传送协议,它是由MicrosoftSOAPToolkit2.0中的HttpConnector类来执行的。SoapConnector类使用步骤如下:a)创建SoapConnector类对象: ISoapConnectorPtrconnector; Connector.CreateInstance(__uuidof(HttpConnector));b)指定Web服务器地址:指定服务器,要做二件事:选择HttpConnector的属性和相应的属性值。本文示例选用EndPointUR
6、L属性: Connector->Property["EndPointURL"]="someurlpointingtowebservice";以下是属性选项说明(属性名是大小写敏感的):AuthPassword:客户口令AuthUser:客户名EndPointURL:客户URLProxyPassword:代理(proxy)口令ProxyPort:代理断口ProxyServer:代理服务器的IP地址或主机名ProxyUser:代理用户名SoapAction:HTTP的抬头值。这个属性只使用于低级API。它将忽略SoapClient接口(高级API)中的ConnectorP
7、roperty属性。SSLClientCertificateName:指定使用SecureSocketsLayer(SSL)加密协议。语法如下: [CURRENT_USER
8、LOCAL_MACHINE[store-name]]cert-namewiththedefaultsbeingCURRENT_USERMY(与MicrosoftInternetExplorer用法相同)。Timeout:HttpConnector的超时限制,以毫秒为单位。UseProxy:定义是否使用代理(proxy)。缺省值为False。如果将这个属性为真(True),又
此文档下载收益归作者所有