📅  最后修改于: 2020-12-13 14:38:18             🧑  作者: Mango
SOAP不与任何传输协议绑定。 SOAP可以通过SMTP,FTP,IBM的MQSeries或Microsoft消息队列(MSMQ)进行传输。
SOAP规范仅包含有关HTTP的详细信息。 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元素。