文章目录
- 第十七章 创建Web客户端 - 其他调整
- 其他调整
- 使用生成的 `Web` 客户端类
- 示例 1:使用使用包装消息的客户端
- 示例 2:使用使用未包装消息的客户端
第十七章 创建Web客户端 - 其他调整
其他调整
如果 WSDL
未指定 Web
服务的位置,则 SOAP
向导不会指定 Web
客户端的 LOCATION
参数。这是一种罕见的情况。在这种情况下,编辑 Web
客户端类以包含 LOCATION
参数。例如:
Parameter LOCATION = "https://devsys:52773/csp/mysamples/GSOP.AddComplexWS.cls";
或者指定 Web
客户端实例的 Location
属性。
使用生成的 Web
客户端类
如上一节所述,生成 Web
客户端类后,通常不会编辑生成的类。相反,可以编写代码来创建该 Web
客户端的实例并提供客户端错误处理。在此代码中,执行以下操作:
- 创建
Web
客户端类的实例。 - 设置其属性。可以在此处控制以下项目:
Web
客户端的端点(它使用的Web
服务的URL
)。要控制这一点,请设置Location
属性,该属性会覆盖Web
客户端类的LOCATION
参数。- 指定代理服务器的设置。
- 控制
HTTP
基本身份验证的设置。
- 根据需要调用
Web
客户端的方法。 - 执行客户端错误处理。
- (可选)检查
Web
客户端收到的HTTP
响应,如本主题后面所述。
下面显示了终端中会话的一个简单示例:
GSOAP>set client=##class(Proxies.CustomerLookupServiceSoap).%New()GSOAP>set resp=client.GetCustomerInfo("137")GSOAP>w resp11@Proxies.CustomerResponseGSOAP>w resp.Name
Smith,Maria
示例 1:使用使用包装消息的客户端
在此示例中,我们为使用包装消息的 Web
客户端创建一个包装类。要使用前面显示的示例 GSOAPClient.AddComplex.AddComplexSoap
,我们可以创建一个如下所示的类:
Class GSOAPClient.AddComplex.UseClient Extends %RegisteredObject
{ClassMethod Add(arg1 As ComplexNumber, arg2 As ComplexNumber) As ComplexNumber
{Set client=##class(AddComplexSoap).%New()//uncomment the following to enable tracing//set client.Location="https://devsys:8080/csp/mysamples/GSOP.AddComplexWS.cls"Set ans=client.Add(arg1,arg2)Quit ans
}}
客户端应用程序将调用此方法来执行 Web
方法。
示例 2:使用使用未包装消息的客户端
在此示例中,我们为使用未包装消息的 Web
客户端创建一个包装类。要使用前面显示的示例 GSOAPClient.AddComplex.AddComplexSoap
,我们可以创建一个如下所示的类:
Class GSOAPClient.AddComplexUnwrapped.UseClient Extends %RegisteredObject
{ClassMethod Add(arg1 As GSOAPClient.AddComplexUnwrapped.s0.ComplexNumber,
arg2 As GSOAPClient.AddComplexUnwrapped.s0.ComplexNumber)
As GSOAPClient.AddComplexUnwrapped.s0.ComplexNumber
{//create the Add messageSet addmessage=##class(GSOAPClient.AddComplexUnwrapped.s0.Add).%New()Set addmessage.a = arg1Set addmessage.b = arg2Set client=##class(AddComplexSoap).%New()//send the Add message to client and get responseSet addresponse=client.Add(addmessage)//get the result from the response messageSet ans=addresponse.AddResultQuit ans}}
该方法具有通常预期的签名;也就是说,它接受两个复数并返回一个复数。该方法创建 Web
客户端期望的消息。该消息的元素是两个复数。
正如所看到的,当 Web
客户端使用未包装的消息时,需要编写稍微多一些的代码来将用户友好形式的参数转换为 Web
客户端使用的消息。