把SOAP 绑定到HTTP,无论使用或不用HTTP 扩展框架,都有很大的好处:在利用SOAP 的形式化和灵活性的同时,使用HTTP 种种丰富的特性。在HTTP中携带SOAP 消息,并不意味着SOAP 改写了HTTP 已有的语义,而是将构建在HTTP 之上SOAP 语义自然地对应到HTTP 语义。SOAP 自然地遵循HTTP的请求/应答消息模型使得SOAP 的请求和应答参数可以包含在HTTP 请求和应答中。注意,SOAP 的中间节点与HTTP 的中间节点并不等同,即不要期望一个根据HTTP 连接头中的域寻址到的HTTP 中间节点能够检查或处理HTTP 请求中的SOAP 消息。在HTTP 消息中包含SOAP 实体时,按照RFC 2376 规定,HTTP 应用程序必须使用媒体类型 "text/xml"。
一个HTTP 请求头中的SOAPAction 域用来指出这是一个SOAP HTTP 请求,它的值是所要的URI。在格式、URI 的特性和可解析性上没有任何限制。当HTTP客户发出SOAP HTTP 请求时必须使用在HTTP 头中使用这个域。
HTTP 头中SOAPAction 域使服务器(如防火墙)能正确地过滤HTTP 中SOAP 请求消息。如果这个域的值是空字符串(""),表示SOAP 消息的目标就是HTTP 请求的URI。这个域没有值表示没有SOAP 消息的目标的信息。例子:(www.xing528.com)
SOAP HTTP 遵循HTTP 中表示通信状态信息的HTTP 状态码的语义。例如,2xx 状态码表示这个包含了SOAP 组件的客户请求已经被成功地收到、理解和接受。在处理请求时如果发生错误,SOAP HTTP 服务器必须发出应答HTTP 500"Internal Server Error",并在这个应答中包含一个SOAP Fault 元素表示这个SOAP 处理错误。
一个SOAP 消息可以与HTTP 扩展框架一起使用以区分是否有SOAP HTTP请求和它的目标。是使用扩展框架或是普通的HTTP 关系到通信各方的策略和能力。通过使用一个必需的扩展声明和"M-"HTTP 方法名前缀,客户可以强制使用HTTP 扩展框架。服务器可以使用HTTP 状态码510 "Not Extended"强制使用HTTP 扩展框架。也就是说,使用一个额外的来回,任何一方都可以发现另一方的策略并依照执行。
免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。