简单的Webservice调用例子(vc版)
### Webservice调用知识点 #### 一、Webservice简介与应用背景 Webservice是一种通过HTTP协议来实现的应用间通信方式,它可以将业务逻辑封装成独立的服务,并通过标准的XML格式来传输数据。这种方式使得不同平台之间的应用能够进行交互,极大地提高了软件系统的可集成性和互操作性。 #### 二、开发环境配置 在本例中,作者使用的是Visual C++(VC),并且引入了SOAP工具包`SoapToolkit30`。SOAP(Simple Object Access Protocol)是用于交换结构化信息的一种轻量级协议,它是Webservice中最常用的数据交换格式之一。通过`#import "msxml4.dll"` 和 `#import "C:\Program Files\Common Files\MSSoap\Binaries\mssoap30.dll"` 这两条指令,我们可以看到开发者已经在项目中加入了必要的库文件。 #### 三、关键类与方法解析 1. **`ISoapSerializerPtr Serializer;`**:此变量用于创建SOAP序列化对象,它负责构建SOAP消息并将业务数据转换为符合SOAP规范的XML格式。 2. **`ISoapReaderPtr Reader;`**:此变量用于创建SOAP读取器对象,它可以从返回的SOAP消息中解析出有用的信息。 3. **`ISoapConnectorPtr Connector;`**:此变量用于创建SOAP连接器对象,它负责建立到Webservice的连接,并发送SOAP消息。 4. **`Connector->Property["EndPointURL"]`**:设置Webservice的访问地址,即Web服务的WSDL文档地址。在这个例子中,Webservice的地址为`http://passport.xxxxxx.com/PassService/Service.asmx?wsdl`。 5. **`Connector->Property["SoapAction"]`**:设置SOAP Action属性,这是一个字符串值,通常对应于Webservice端定义的操作名称。在本例中,操作名为`http://10.0.0.10/ValidatePassport`,表示验证用户身份的操作。 6. **`Connector->BeginMessage()`** 和 **`Connector->EndMessage()`**:这两个方法分别用于开始构建SOAP消息和完成消息构建。中间夹杂着构建SOAP消息体的具体代码。 7. **`Serializer->StartEnvelope()`** 和 **`Serializer->EndEnvelope()`**:开始和结束SOAP信封。信封是SOAP消息的基本组成部分,它包含所有其他元素,如头部和体部。 8. **`Serializer->StartBody()`** 和 **`Serializer->EndBody()`**:开始和结束SOAP消息体部分。体部包含具体的请求或响应信息。 9. **`Serializer->StartElement()`** 和 **`Serializer->EndElement()`**:这些方法用于构建SOAP消息体中的各个元素。例如,`StartElement("loginName", "http://10.0.0.10/", "", "");` 创建了一个名为`loginName`的元素。 10. **`Serializer->WriteString()`**:用于写入具体的文本值,如用户名、密码等。 11. **`Reader->Load()`**:加载从Webservice返回的SOAP消息。在此之后,可以通过一系列的方法来解析这个消息,提取出其中的有用信息。 #### 四、示例代码分析 在这段代码中,作者通过一系列的步骤完成了对Webservice的调用: 1. 首先初始化连接器`Connector`并设置连接参数; 2. 使用`Serializer`构建SOAP消息; 3. 通过`Connector`发送SOAP消息; 4. 最后使用`Reader`解析返回的消息。 整个过程遵循了SOAP消息的标准构建流程,非常适合初学者学习。 #### 五、注意事项 1. **确保SOAP消息格式正确**:必须严格按照SOAP规范构建消息,包括正确的命名空间、元素名称等。 2. **处理异常情况**:在实际开发过程中,应考虑到网络连接失败、服务器无响应等异常情况,并采取适当的措施进行处理。 3. **安全问题**:当涉及到敏感信息(如密码)时,应当考虑加密传输或其他安全措施。 4. **性能优化**:对于高并发场景,可以考虑使用异步调用等方式提高效率。 通过以上介绍,我们可以看到,虽然Webservice的概念相对简单,但在实际开发中需要注意的细节却很多。希望本篇分析能帮助大家更好地理解和掌握Webservice的相关知识。
- littleline2014-05-20介绍得挺详细,但是好像是J2EE的,不是VC
- 粉丝: 1
- 资源: 1
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助