死在SOAP...

本文介绍了SOAP(Simple Object Access Protocol)协议的基本概念,详细解释了其四个核心组成部分:SOAP封装、编码规则、RPC表示及绑定方式,并阐述了这些部分的功能及其相互之间的独立性。

什么是SOAP,SOAP是什么

SOAP(Simple Object Access Protocol )简单对象访问协议是在分散或分布式的环境中交换信息的简单的协议,是一个基于XML的协议,它包括四个部分:

SOAP封装(envelop),封装定义了一个描述消息中的内容是什么,是谁发送的,谁应当接受并处理它以及如何处理它们的框架;

SOAP编码规则(encoding rules),用于表示应用程序需要使用的数据类型的实例;

SOAP RPC表示(RPC representation),表示远程过程调用和应答的协定;

SOAP绑定(binding),使用底层协议交换信息。   

虽然这四个部分都作为SOAP的一部分,作为一个整体定义的,但他们在功能上是相交的、彼此独立的。特别的,信封和编码规则是被定义在不同的XML命名空间(namespace)中,这样使得定义更加简单。

 

引用自http://www.dayanmei.com/blog.php/ID_270.htm

 

浅谈 SOAP

http://www.ibm.com/developerworks/cn/xml/x-sisoap/index.html

在C#中,如果你想要通过HTTP发送SOAP请求,你可以使用.NET Framework自带的System.Web.Services命名空间,特别是ServiceReference类以及WebServiceClient类。以下是基本步骤: 1. **创建服务引用**: 首先,你需要创建一个WebService引用,这会自动生成客户端代理类,用于调用远程服务。打开Visual Studio的解决方案资源管理器,右键点击项目 -> 添加 -> Web Service Reference,然后输入URL或者选择WSDL文件。 2. **实例化客户端**: 使用`ServiceReference`里的类名称创建一个客户端实例,例如`MyWebService proxy = new MyWebService();`这里`MyWebService`是生成的服务引用名。 3. **构造SOAP消息**: 创建一个`SoapMessage`对象,可以包含SOAP请求头、主体和尾部。通常你会使用`XmlSerializer`序列化对象到XML字符串作为SOAP主体。 ```csharp string soapRequest = "<?xml version='1.0' encoding='utf-8'?><soap:Envelope xmlns:xsi='http://www.w3.org/2001/XMLSchema-instance' xmlns:xsd='http://www.w3.org/2001/XMLSchema' xmlns:soap='http://schemas.xmlsoap.org/soap/envelope/'><soap:Body><MyMethod xmlns='http://yourwebservice.com'> <arg1>value1</arg1> <arg2>value2</arg2></MyMethod></soap:Body></soap:Envelope>"; ``` 这里的`MyMethod`是你要调用的服务方法名,`arg1`和`arg2`是你传递的参数。 4. **发送请求并接收响应**: 调用`Invoke`方法,并将构造好的`SoapMessage`作为参数传入。这将会触发网络请求,并返回一个`SoapResponseMessage`。 ```csharp using (var message = new SoapMessage(soapRequest)) { var response = proxy.MyMethod(message); // 对response进行处理,如反序列化成所需的对象 } ``` 5. **异常处理**: 确保添加适当的错误处理,因为网络请求可能会失败。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值