第五章 引用 SOAP 操作(仅限 SOAP 1.1)
引用 SOAP
操作(仅限 SOAP 1.1
)
在 SOAP 1.1
请求消息中,HTTP
标头包含如下 SOAPAction
行:
POST /csp/gsop/GSOP.DivideWS.cls HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; InterSystems IRIS;)
Host: localhost:8080
Connection: Close
Accept-Encoding: gzip
SOAPAction: http://www.mynamespace.org/GSOAP.DivideWS.Divide
Content-Length: 397
Content-Type: text/xml; charset=UTF-8
...
默认情况下,SOAPAction
的值不带引号。要将此值放在引号中,请在 Web 客户端类中将 SOAPACTIONQUOTED
指定为 1
。然后请求消息的 HTTP
标头将如下所示:
POST /csp/gsop/GSOP.DivideWS.cls HTTP/1.1
User-Agent: Mozilla/4.0 (compatible; InterSystems IRIS;)
Host: localhost:8080
Connection: Close
Accept-Encoding: gzip
SOAPAction: "http://www.mynamespace.org/GSOAP.DivideWS.Divide"
Content-Length: 397
Content-Type: text/xml; charset=UTF-8
...
在 SOAP 1.2
中,SOAPACTIONQUOTED
参数不起作用。这是因为请求消息没有 SOAPAction
行。相反,SOAP
操作始终被引用,并包含在 Content-Type
行中,如下所示:
Content-Type: application/soap+xml;
charset=UTF-8; action="http://www.mynamespace.org/GSOAP.DivideWS.Divide"
注意:此示例显示了人为的换行符,以确保当此内容格式化为 PDF
时,该行适合页面。
将 HTTP
状态 202
视为状态 200
默认情况下, Web
客户端遵循标准 WS-I
基本配置文件,仅当 HTTP
响应不包含 SOAP
信封时才使用 HTTP
响应状态 202
。
如果要以与 HTTP
状态 200
相同的方式处理 HTTP
状态 202
,请将客户端的 HttpAccept202
属性设置为 1
。要查看实际的返回状态,请检查客户端的 HttpResponse.StatusCode
属性。
WS-I
基本配置文件支持但不鼓励这种做法:“该配置文件接受这两种状态代码,因为某些 SOAP
实现对 HTTP
协议实现几乎没有控制权,并且无法控制发送哪一个响应状态代码。”