第八章 指定自定义 HTTP 请求
默认情况下,Web
客户端使用 HTTP
将 SOAP
消息传输到 Web
服务并接收响应。Web
客户端会自动创建并发送 HTTP
请求,但可以创建自定义 HTTP
请求。为此,请使用以下步骤:
- 在创建
%Net.HttpReques
的实例并根据需要设置属性。有关此类的信息,请参阅使用Internet
实用程序或%Net.HttpRequest
类文档。 - 将
Web
客户端的HttpRequest
属性设置为等于此实例。
如果希望在同一会话中支持对 SOAP
服务的多次调用,这尤其有用。默认情况下, Web
客户端不支持使用同一会话对 SOAP
服务进行多次调用。要解决此问题,创建一个新的 %Net.HttpRequest
实例,并将其用作 Web
客户端的 HttpRequest
属性。此更改强制对所有调用重复使用相同的 HTTP
请求,这将在对下一个请求的响应中返回所有 cookie
。
自定义 Web
客户端的回调
可以通过覆盖其回调方法来定制 Web
客户端的行为:
%OnSOAPRequest()
Method %OnSOAPRequest(mode As %String,
client As %SOAP.WebClient,
action As %String,
oneWay As %Boolean,
method As %String,
requestStream As %BinaryStream)
在 Web
客户端调用传输类的 DoSOAPRequest()
方法(发出实际的 SOAP
请求)之前调用。默认的 DoSOAPRequest()
方法包含在 %SOAP.WebClient
中,并使用 HTTP
进行请求/响应。
mode
指定SOAP
请求的类型(“SOAP”
或“binary”
)。client
是Web
客户端实例的OREF
。action
包含SOAPAction
标头的值。- 如果无需发送任何正文,则
oneWay
为真。 method
参数是正在调用的Web
方法的名称。requestStream
参数包含流中的SOAP
请求消息。
Method %OnSOAPResponse(mode As %String,
client As %SOAP.WebClient,
action As %String,
oneWay As %Boolean,
method As %String,
requestStream As %BinaryStream,
responseStream As %BinaryStream,
sc As %Status)
在 Web
客户端调用传输类的 DoSOAPRequest()
方法后调用。sc
参数是传输类的 DoSOAPRequest()
方法返回的状态。其他参数与 %OnSOAPRequest()
相同。
%OnSOAPFinished()
%OnSOAPFinished()
在 Web
客户端执行完所有处理后调用。sc
参数是调用的 Web
方法返回的状态。mode
、client
和 method
参数与其他回调方法相同。