第七章 解析时使用进程私有全局变量
第七章 解析时使用进程私有全局变量
默认情况下, 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的类文档。