美文网首页
第十七章 创建Web客户端 - 其他调整

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

作者: Cache技术分享 | 来源:发表于2024-06-04 08:11 被阅读0次

    第十七章 创建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. 设置其属性。可以在此处控制以下项目:
    • Web 客户端的端点(它使用的 Web 服务的 URL)。要控制这一点,请设置 Location 属性,该属性会覆盖 Web 客户端类的 LOCATION 参数。
    • 指定代理服务器的设置。
    • 控制 HTTP 基本身份验证的设置。
    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 客户端使用的消息。

    相关文章

      网友评论

          本文标题:第十七章 创建Web客户端 - 其他调整

          本文链接:https://www.haomeiwen.com/subject/cmcyqjtx.html