soap协议简介--收藏
SOAP消息机制简介SOAP(Simple Object Access Protocol,简单对象访问协议)作为一种信息交互协议在分布式应用中非常广泛,如WebService。在使用.Net开发WebService时候,只需要在对应的方法上加上WebMethod特性然后就可以通过网络进行SOAP消息的发送。这样在平时使用Webservice时,可能不太关心SOAP消息的结构到底是怎样的。下面大致说说SOAP消息的结构,以及使用工具监听SOAP消息报文。 ·??????1、XSD是什么 ·??????2、基于SOAP的数据交互系统是XSD的 ·??????3、SOAPSOAP消息结构 ·??????4、支持SOAP的协议 ·??????5、通过SOAPHeader扩展SOAP ·??????6、SOAP自定义异常 ·??????7、监听SOAP消息 ? 1、XSD是什么? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ?? ? ? ? ?? ? 2、基于SOAP的数据交互系统应该是XSD的 ?? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? 3、消息结构? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ?? ? ? 它包含由SOAP信封(<soap:Envelope>) SOAP 头(<soap:Header>) SOAP消息体(<soap:Body>)组成。其中<soap:Envelope>是SOAP消息中的根节点,是SOAP消息中必须的部分;<soap:Header>是SOAP消息中可选部分,如果SOAP消息中含有它,那么它一定要是soap:Envelope>中的第一个元素节点;<soap:Body>是SOAP中必须部分,如果SOAP消息中没有<soap:Header>,那么<soap:Body>必须是SOAP中第一个元素节点。 <soap:Body>
<soap:Fault>
<faultcode xmlns:q0="ns=cnblogs.com/tyb1222">q0:code</faultcode>
<faultstring>System.Web.Services.Protocols.SoapException: 0x00</faultstring>
<faultactor/>
<detail />
</soap:Fault>
</soap:Body>
<faultcode>是<soap:Fault>中必须的元素节点,它让消费者能识别错误。 <faultstring>是<soap:Fault>中必须的元素节点,用来描述错误文本信息 ? 4、支持的协议? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ?? ? ? 5、通过SOAPHeader扩展SOAP? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? public class EaxmHeader : SoapHeader
{
???? public string UserName { get; set; }
???? public string Password { get; set; }
?
??? public EaxmHeader()
??? {
??? }
?
??? public EaxmHeader(string userName,string password)
??? {
? ??????UserName = userName;
??????? Password = password;
??? }
}
然后在WebService具体函数接口上通过SOAPAttribute中MemberName设置为将EaxmHeader对象添加。如下: [WebMethod] ? 6自定义异常 ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? 7、监听消息? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ?? ? ? ? ? ? ? ? ? ? ?? ? ?? public class ExamService : SoapHttpClientProtocol
{
??? private SendOrPostCallback divideOperationCompleted;
?
??? /// <remarks/>
??? public ExamService()
??? {
??????? Url = "http://193.168.11.94:8866/ExamService/WebService1.asmx";
??? }
....
}
上面http://193.168.11.94:8866 就是在使用工具监听SOAP消息时本地的端口号。注意:如果是在VS调试环境下,使用Asp.NetDevelopment Server也会使用一个端口号,实际监听的端口号是代理类中设置的端口,和它一般是不同。 (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |