【问题标题】:How do i get rid of the extra <return> element in nusoap response我如何摆脱 nusoap 响应中额外的 <return> 元素
【发布时间】:2017-03-02 11:05:40
【问题描述】:

我已在 nusoap 中成功返回响应。我的要求是

<x:Envelope xmlns:x="http://schemas.xmlsoap.org/soap/envelope/" xmlns:urn="urn:B2BStandardApi">
<x:Header/>
<x:Body>
    <urn:getAccountValidationInput>
        <urn:operationParameters>
            <urn:TransactionReferenceCode>?</urn:TransactionReferenceCode>
            <urn:TransactionDate>2017-03-02T00:00:00</urn:TransactionDate>
        </urn:operationParameters>
        <urn:accountInfo>
            <urn:AccountNumber>00019</urn:AccountNumber>
        </urn:accountInfo>
        <urn:institution>
            <urn:InstitutionCode>?</urn:InstitutionCode>
            <urn:InstitutionName>?</urn:InstitutionName>
        </urn:institution>
    </urn:getAccountValidationInput>
</x:Body>

响应如下图,

<SOAP-ENV:Envelope SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Header>headerstring</SOAP-ENV:Header>
<SOAP-ENV:Body>
    <ns1:getAccountValidationOutput xmlns:ns1="urn:B2BStandardApi">
        <return>
            <operationParameters>
                <TransactionReferenceCode xsi:type="xsd:string">CICAM-000080</TransactionReferenceCode>
                <TransactionDate xsi:type="xsd:string">2017-03-02 13:43:59+03:00</TransactionDate>
                <TotalAmount xsi:type="xsd:float">0</TotalAmount>
                <Currency xsi:type="xsd:string"></Currency>
                <AdditionalInfo xsi:type="xsd:string"></AdditionalInfo>
            </operationParameters>
            <accountInfo xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="unnamed_struct_use_soapval[3]">
                <item>
                    <AccountNumber xsi:type="xsd:string">00017-002-00019-003</AccountNumber>
                    <AccountType xsi:type="xsd:string">Equity Fund</AccountType>
                </item>
                <item>
                    <AccountNumber xsi:type="xsd:string">00017-002-00019-004</AccountNumber>
                    <AccountType xsi:type="xsd:string">Fixed Income</AccountType>
                </item>
                <item>
                    <AccountNumber xsi:type="xsd:string">00017-004-00019-002</AccountNumber>
                    <AccountType xsi:type="xsd:string">Money Market</AccountType>
                </item>
            </accountInfo>
            <institution>
                <InstitutionCode xsi:type="xsd:string">CICAM</InstitutionCode>
                <InstitutionName xsi:type="xsd:string">CIC ASSET MANAGEMENT</InstitutionName>
            </institution>
        </return>
    </ns1:getAccountValidationOutput>
</SOAP-ENV:Body>

我想从响应中删除多余的元素,预期的响应不应该有返回标签,

服务在 NuSoapPHP7 上运行。

如何删除多余的元素

【问题讨论】:

  • 您是否编写了生成响应的代码?如果没有,那么你必须处理他们给你的东西!
  • Marcin Orlowski,我尝试编写一个序列化返回的响应类,但它给出了一个空的响应,RiggsFolly,是的,我做到了。我有一个验证函数,可以从数据库中获取数据并返回响应

标签: php xml soap nusoap


【解决方案1】:

经过一番挖掘,我发现返回标签是来自返回参数,只需要使用输入参数作为返回。 初始注册如图所示

$server->register(
"getAccountValidationInput",
array("operationParameters" => "tns:operationParameters", "accountInfo" => "tns:accountInfo", "institution" => "tns:institution"),
array("return" => "xsd:Array"),
"urn:B2BStandardApi",
"urn:B2BStandardApi#AccountValidation",
"rpc", "literal", "Get member details by member number"

);

从上面,我返回了一个数组,该数组将作为 xml 元素包装在返回键中,

要求如

$server->register(
"getAccountValidationInput",
array("operationParameters" => "tns:operationParameters", "accountInfo" => "tns:accountInfo", "institution" => "tns:institution"),
array("operationParameters" => "tns:Parameters", "accountInfo"=>"tns:accounts", "institution"=>"institution"),
"urn:B2BStandardApi",
"urn:B2BStandardApi#AccountValidation",
"rpc", "literal", "Get member details by member number"

);

返回值将是

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/">
<SOAP-ENV:Header>headerstring</SOAP-ENV:Header>
<SOAP-ENV:Body>
    <ns1:getAccountValidationOutput xmlns:ns1="urn:B2BStandardApi">
        <operationParameters>
            <TransactionReferenceCode>CICAM-000114</TransactionReferenceCode>
            <TransactionDate>2017-03-03 11:02:53+03:00</TransactionDate>
            <TotalAmount>0</TotalAmount>
            <Currency></Currency>
            <AdditionalInfo/>
        </operationParameters>
        <accountInfo>
            <item>
                <AccountNumber>0001700200019004</AccountNumber>
                <AccountName>Fixed Income</AccountName>
            </item>
        </accountInfo>
        <institution>
            <InstitutionCode>CICAM</InstitutionCode>
            <InstitutionName>ASSET MANAGEMENT</InstitutionName>
        </institution>
    </ns1:getAccountValidationOutput>
</SOAP-ENV:Body>

【讨论】:

    猜你喜欢
    • 2014-08-28
    • 2015-11-19
    • 2011-04-21
    • 1970-01-01
    • 1970-01-01
    • 2021-04-15
    • 2014-08-11
    • 2011-01-17
    • 1970-01-01
    相关资源
    最近更新 更多