📜  SOAP-传输

📅  最后修改于: 2020-12-13 14:38:18             🧑  作者: Mango


SOAP不与任何传输协议绑定。 SOAP可以通过SMTP,FTP,IBM的MQSeries或Microsoft消息队列(MSMQ)进行传输。

SOAP规范仅包含有关HTTP的详细信息。 HTTP仍然是最流行的SOAP传输协议。

通过HTTP的SOAP

从逻辑上讲,SOAP请求是通过HTTP请求发送的,并且SOAP响应是在HTTP响应的内容内返回的。尽管可以通过HTTP GET发送SOAP请求,但该规范仅包含有关HTTP POST的详细信息。

此外,HTTP请求和响应都需要将其内容类型设置为text / xml。

SOAP规范要求客户端必须提供SOAPAction标头,但是SOAPAction标头的实际值取决于SOAP服务器的实现。

例如,要访问XMethods托管的AltaVista BabelFish转换服务,必须将以下内容指定为SOAPAction标头。

urn:xmethodsBabelFish#BabelFish

即使服务器不需要完整的SOAPAction标头,客户端也必须指定一个空字符串(“”)或一个空值。例如-

SOAPAction: ""
SOAPAction:

这是通过HTTP发送到XMethods Babelfish Translation Service的示例请求-

POST /perl/soaplite.cgi HTTP/1.0
Host: services.xmethods.com
Content-Type: text/xml; charset = utf-8
Content-Length: 538
SOAPAction: "urn:xmethodsBabelFish#BabelFish"




   
      
         en_fr
         Hello, world!
      
   

注意内容类型和SOAPAction标头。另请注意,BabelFish方法需要两个String参数。转换模式en_fr从英语转换为法语。

这是来自XMethods的响应-

HTTP/1.1 200 OK
Date: Sat, 09 Jun 2001 15:01:55 GMT
Server: Apache/1.3.14 (Unix) tomcat/1.0 PHP/4.0.1pl2
SOAPServer: SOAP::Lite/Perl/0.50
Cache-Control: s-maxage = 60, proxy-revalidate
Content-Length: 539
Content-Type: text/xml



   
   
      
         Bonjour, monde!
      
   

通过HTTP传递的SOAP响应必须遵循相同的HTTP状态代码。例如,状态码200 OK表示响应成功。状态代码500 Internal Server Error表示存在服务器错误,并且SOAP响应包括Fault元素。