美文网首页收藏
第六十三章 生成的类的详细信息 - 数组属性的创建

第六十三章 生成的类的详细信息 - 数组属性的创建

作者: Cache技术分享 | 来源:发表于2024-07-21 07:53 被阅读0次

    第六十三章 生成的类的详细信息 - 数组属性的创建

    数组属性的创建

    默认情况下,SOAP 向导会在某些情况下创建数组类型的属性。如果需要,可以使用“不创建数组属性”选项来创建具有不同结构的属性。

    具体来说,考虑包含以下类型的 WSDL

    <s:complexType name="Obj">
        <s:sequence>
            <s:element minOccurs="0" name="MyProp" type="test:Array"/>
        </s:sequence>
    </s:complexType>
    <s:complexType name="Array">
        <s:sequence>
            <s:element maxOccurs="unbounded" minOccurs="0" name="Item" nillable="true" type="test:Item"/>
        </s:sequence>
    </s:complexType>
    <s:complexType name="Item">
        <s:simpleContent>
            <s:extension base="s:string">
    <s:attribute name="Key" type="s:string" use="required"/>
            </s:extension>
        </s:simpleContent>
    </s:complexType>
    
    

    默认情况下,SOAP 向导生成以下类:

    Class testws.Obj Extends (%RegisteredObject, %XML.Adaptor)
    {
    
    Parameter ELEMENTQUALIFIED = 1;
    
    Parameter NAMESPACE = "https://testws.org";
    
    Parameter XMLNAME = "Obj";
    
    Parameter XMLSEQUENCE = 1;
    
    Property MyProp As array Of %String(MAXLEN = "", XMLITEMNAME = "Item", 
    XMLKEYNAME = "Key", XMLNAME = "MyProp", XMLPROJECTION = "COLLECTION");
    
    }
    

    如果在使用 SOAP 向导时选择“不创建数组属性”,则生成的 Obj 类中的属性 MyProp 将定义如下:

    Property MyProp As list Of testws.Item(XMLITEMNAME = "Item", XMLNAME = "MyProp", XMLPROJECTION = "COLLECTION");
    

    此属性引用以下类,SOAP 向导也会生成该类:

    Class testws.Item Extends (%SerialObject, %XML.Adaptor)
    {
    
    Parameter ELEMENTQUALIFIED = 1;
    
    Parameter NAMESPACE = "https://testws.org";
    
    Parameter XMLNAME = "Item";
    
    Parameter XMLSEQUENCE = 1;
    
    Property content As %String(MAXLEN = "", XMLNAME = "content", XMLPROJECTION = "CONTENT");
    
    Property Key As %String(MAXLEN = "", XMLNAME = "Key", XMLPROJECTION = "ATTRIBUTE") 
    [ Required, SqlFieldName = _Key ];
    
    }
    

    生成的类中的 Web 方法的附加说明

    本节包含有关生成的 Web 客户端类中的 Web 方法的附加说明。

    • IRIS 数据平台确保每个方法名称都短于方法名称限制,并且是唯一的。(有关方法名称长度的信息,请参阅常规系统限制)这意味着,如果 WSDL 中的方法名称长于此限制,则生成的 Web 方法的名称与 WSDL 中的名称不同。

    所使用的算法没有记录并且可能会发生变化,恕不另行通知。

    • 如果 WSDL 中给定方法的 soapAction 属性等于 ""(这是有效的),则需要对生成的客户端类进行以下更改之一,以使此方法可以正常工作:
      • SOAPACTIONQUOTED 参数设置为 1
      • 编辑生成的客户端类中的Web方法,原包含以下内容:
       Quit ..WebMethod("HelloWorld").Invoke($this,"")
    

    编辑如下:

       Quit ..WebMethod("HelloWorld").Invoke($this,"""")
    

    或者,在生成 Web 客户端之前编辑 WSDL。如果这样做,请将 soapAction 属性编辑为""""而不是""

    相关文章

      网友评论

        本文标题:第六十三章 生成的类的详细信息 - 数组属性的创建

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