第十七章 创建Web客户端 - 其他调整

2024-06-04  本文已影响0人  Cache技术分享

第十七章 创建Web客户端 - 其他调整

其他调整

如果 WSDL 未指定 Web 服务的位置,则 SOAP 向导不会指定 Web 客户端的 LOCATION 参数。这是一种罕见的情况。在这种情况下,编辑 Web 客户端类以包含 LOCATION 参数。例如:

Parameter LOCATION = "https://devsys:52773/csp/mysamples/GSOP.AddComplexWS.cls";

或者指定 Web 客户端实例的 Location 属性。

使用生成的 Web 客户端类

如上一节所述,生成 Web 客户端类后,通常不会编辑生成的类。相反,可以编写代码来创建该 Web 客户端的实例并提供客户端错误处理。在此代码中,执行以下操作:

  1. 创建 Web 客户端类的实例。
  2. 设置其属性。可以在此处控制以下项目:
  1. 根据需要调用Web客户端的方法。
  2. 执行客户端错误处理。
  3. (可选)检查 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 客户端使用的消息。

上一篇下一篇

猜你喜欢

热点阅读