第七章 解析时使用进程私有全局变量
默认情况下, Web
客户端在解析请求或响应时通常使用本地数组内存。可以强制它改用进程私有全局变量;这使 Web
客户端能够处理非常大的消息。
为此,请指定 Web
服务类的 USEPPGHANDLER
参数,如下所示:
Parameter USEPPGHANDLER = 1;
如果此参数为 1
,则 Web
客户端在解析请求或响应时始终使用进程私有全局变量。如果此参数为 0
,则 Web
客户端始终使用本地数组内存来实现这些目的。如果未设置此参数,则 Web
客户端使用默认值,通常是本地数组内存。
可以在运行时覆盖此参数。为此,请设置 Web
客户端实例的 UsePPGHandler
属性。
创建自定义 SOAP
消息
在特殊情况下,可能希望 Web
客户端发送自定义 SOAP
消息。基本要求如下:
- 创建
%SOAP.WebRequest
的子类并设置其LOCATION
参数或Location
属性。 - 在此子类中,创建一个方法来发送
SOAP
消息。此方法必须创建%Library.CharacterStream
的实例,并将要发送的SOAP
消息放入其中。有责任确保消息格式正确。 - 该方法接下来必须调用
SendSOAPBody()
方法:
method SendSOAPBody(Action As %String,
OneWay As %Boolean = 0,
Request As %CharacterStream,
ByRef Response) as %Status
-
Action
是一个字符串,它给出了要执行的 SOAP 操作的名称。 -
OneWay
是一个真/假标志,控制消息是否是单向的。 -
Request
是%Library.CharacterStream
的一个实例,包含当前语言环境的字符集中的SOAP
请求正文。 -
Response
是响应,通过引用作为字符流或%XML.Node
的实例返回。
如果调用 SendSOAPBody()
时Response
为空,则该方法会将 Response
设置为中 %Library.CharacterStream
的实例。此流包含当前语言环境的字符集中的 SOAP
响应主体。
如果当调用 SendSOAPBody()
时 Response
是 %Library.CharacterStream
的一个实例,则该方法将更新 Response
以包含当前语言环境的字符集中的 SOAP
响应主体。
如果当调用 SendSOAPBody()
时 Response
是中 %XML.Node
的一个实例,则该方法会更新 Response
以指向主体 DOM
。
%SOAP.WebRequest
是 %SOAP.WebClient
的子类,因此可能需要设置其他参数和属性。还可以添加 SOAP
标头,如其他地方所述。有关更多说明,请参阅 %SOAP.WebRequest
的类文档。
网友评论