文章
· 八月 9 阅读大约需 2 分钟

第五章 引用 SOAP 操作(仅限 SOAP 1.1)

第五章 引用 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 协议实现几乎没有控制权,并且无法控制发送哪一个响应状态代码。”

讨论 (0)1
登录或注册以继续