【问题标题】:SOAP Payload with nested complexType具有嵌套 complexType 的 SOAP 有效负载
【发布时间】:2019-01-04 16:31:13
【问题描述】:

我正在尝试在参数是复杂类型的情况下发出 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>

我的问题是如何填写&lt;ns1:request/&gt; 元素。请求应该是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"/>

DF 请求:

<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"/>

DF 对象:

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

【问题讨论】:

    标签: soap soapui


    【解决方案1】:

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

    重要的部分是将type 属性分配给标签。这涉及到导入 http://www.w3.org/2001/XMLSchema-instance 命名空间来获取类型属性,以及导入 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>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-12-10
      • 1970-01-01
      • 2013-08-21
      • 1970-01-01
      • 2022-06-14
      • 2018-08-27
      相关资源
      最近更新 更多