具有嵌套complexType的SOAP有效负载

时间:2019-01-04 16:31:13

标签: soap soapui

我正在尝试发出一个参数是复杂类型的SOAP请求,并且在正确设置语法方面遇到了麻烦。

这是SoapUI生成的SOAP请求:

    <SOAP-ENV:Envelope 
            xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/"
            xmlns:ns1="http://Dayforce/Services/DayforceService">
        <SOAP-ENV:Body>
            <ns1:Query>
                <ns1:sessionTicket>?</ns1:sessionTicket>
                <ns1:request/>
            </ns1:Query>
        </SOAP-ENV:Body>
    </SOAP-ENV:Envelope>

我的问题是如何填写<ns1:request/>元素。该请求应为GetReportDefinitionsRequest,并且需要为XRefCode提供一个字符串值。

SoapUI在这里没有太大帮助,而我尝试过的WSDL到类生成器也有类似的问题。在这一点上,我已经准备好了解正确的XML语法

以下是相关类型(也在上面的WSDL中提供)。

查询:

<xs:element name="Query">
    <xs:complexType>
        <xs:sequence>
            <xs:element minOccurs="0" name="sessionTicket" nillable="true" type="xs:string"/>
            <xs:element xmlns:q9="http://Dayforce/Services/Data" minOccurs="0" name="request" nillable="true" type="q9:DFRequest"/>
        </xs:sequence>
    </xs:complexType>
</xs:element>

GetReportDefinitionsRequest:

<xs:complexType name="GetReportDefinitionsRequest">
    <xs:complexContent mixed="false">
        <xs:extension base="tns:DFRequest">
            <xs:sequence>
                <xs:element minOccurs="0" name="XRefCode" nillable="true" type="xs:string"/>
            </xs:sequence>
        </xs:extension>
    </xs:complexContent>
</xs:complexType>
<xs:element name="GetReportDefinitionsRequest" nillable="true" type="tns:GetReportDefinitionsRequest"/>

DFRequest:

<xs:complexType name="DFRequest">
    <xs:complexContent mixed="false">
        <xs:extension base="tns:DFObject">
            <xs:sequence/>
        </xs:extension>
    </xs:complexContent>
</xs:complexType>
<xs:element name="DFRequest" nillable="true" type="tns:DFRequest"/>

DFObject:

<xs:complexType name="DFObject">
    <xs:sequence/>
</xs:complexType>
<xs:element name="DFObject" nillable="true" type="tns:DFObject"/>

1 个答案:

答案 0 :(得分:0)

我能够运行示例代码并挂接以获取为请求生成的XML。这是结果,以防将来对任何人有帮助。

重要的部分是为标签分配type属性。这涉及到导入http://www.w3.org/2001/XMLSchema-instance名称空间以获取type属性,并导入http://Dayforce/Services/Data类型名称本身的命名空间。

    <SOAP-ENV:Envelope 
        xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" 
        xmlns:dfs="http://Dayforce/Services/DayforceService">
    <SOAP-ENV:Header/>
    <SOAP-ENV:Body>
        <dfs:Query>
            <dfs:sessionTicket>?</dfs:sessionTicket>
            <dfs:request 
                    xmlns:i="http://www.w3.org/2001/XMLSchema-instance"
                    xmlns:dfd="http://Dayforce/Services/Data" 
                    i:type="dfd:GetReportDefinitionsRequest">
                <dfd:XRefCode>?</dfd:XRefCode>
            </dfs:request>
        </dfs:Query>
    </SOAP-ENV:Body>
</SOAP-ENV:Envelope>
相关问题