第十七章 创建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 resp
11@Proxies.CustomerResponse
GSOAP>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 message
Set addmessage=##class(GSOAPClient.AddComplexUnwrapped.s0.Add).%New()
Set addmessage.a = arg1
Set addmessage.b = arg2
Set client=##class(AddComplexSoap).%New()
//send the Add message to client and get response
Set addresponse=client.Add(addmessage)
//get the result from the response message
Set ans=addresponse.AddResult
Quit ans
}
}
该方法具有通常预期的签名;也就是说,它接受两个复数并返回一个复数。该方法创建 Web
客户端期望的消息。该消息的元素是两个复数。
正如所看到的,当 Web
客户端使用未包装的消息时,需要编写稍微多一些的代码来将用户友好形式的参数转换为 Web
客户端使用的消息。
网友评论