文章目录
- [第八章 指定自定义 HTTP 请求](#第八章 指定自定义 HTTP 请求)
- [自定义 `Web` 客户端的回调](#自定义
Web客户端的回调)
第八章 指定自定义 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()
java
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请求消息。
java
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()
java
%OnSOAPFinished()
在 Web 客户端执行完所有处理后调用。sc 参数是调用的 Web 方法返回的状态。mode、client 和 method 参数与其他回调方法相同。