Warm tip: This article is reproduced from serverfault.com, please click

php-服务器肥皂响应中的额外元素

(php - Extra element in the server soap response)

发布于 2020-09-30 05:36:55

我有一个wsdl模式。我正在使用包含一个字段中的对象列表的类生成答案

<s:element name="ClassOfResponse">
    <s:complexType>
        <s:sequence>
            <s:element minOccurs="0" maxOccurs="1" name="ClassOfResponse" type="tns:ValueOfResponse"/>
        </s:sequence>
    </s:complexType>
</s:element>
<s:complexType name="ValueOfResponse">
    <s:sequence>
        <s:element minOccurs="1" maxOccurs="1" name="code" type="s:int"/>
        <s:element minOccurs="0" maxOccurs="1" name="message" type="s:string"/>
        <s:element minOccurs="0" maxOccurs="1" name="listValues" type="tns:ArrayOfValues"/>
    </s:sequence>
</s:complexType>
<s:complexType name="ArrayOfValues">
    <s:sequence>
        <s:element minOccurs="0" maxOccurs="unbounded" name="Value" nillable="true" type="tns:Value"/>
    </s:sequence>
</s:complexType>
<s:complexType name="Value">
    <s:sequence>
        <s:element minOccurs="1" maxOccurs="1" name="FieldA" type="s:string"/>
        <s:element minOccurs="1" maxOccurs="1" name="FieldB" type="s:string"/>
    </s:sequence>
</s:complexType>

在运行过程中,我的控制器会生成这样的响应结构,即在响应中需要接收的结构

{
    "ClassOfResponse": {
        "code":0,
        "message":"Consulta Exitosa",
        "listValues": [
            {
                "FieldA": "text A",
                "FieldB": "text B"
            },
            {
                "FieldA": "text A2",
                "FieldB": "text B2"
            },
        ]
    }
}

客户的肥皂响应包含一个额外的元素Value我正在尝试了解他如何到达这里以及计划中的错误在哪里

+"ClassOfResponse": {#617
    +"code": 0
    +"message": "Consulta Exitosa"
    +"listValues": {#618
        +"Value": array:2 [
            0 => {#619
                +"FieldA": "text A"
                +"FieldB": "text B"
            }
            1 => {#620
                +"FieldA": "text A2"
                +"FieldB": "text B2"
            }
        ]
    }
}

中间从何而来?

Questioner
Takamura
Viewed
11
Takamura 2020-12-01 17:22:57

一个字段中具有多个数据的SOAP方案的典型行为是一个类数组

+"ClassOfResponse": {#617
    +"code": 0
    +"message": "Consulta Exitosa"
    +"listValues": {#618
        +"Value": array:2 [
            0 => {#619
                +"FieldA": "text A"
                +"FieldB": "text B"
            }
            1 => {#620
                +"FieldA": "text A2"
                +"FieldB": "text B2"
            }
        ]
    }
}

...在字段中具有单个数据的类

+"ClassOfResponse": {#617
    +"code": 0
    +"message": "Consulta Exitosa"
    +"listValues": {#618
        +"Value": {#619
           +"FieldA": "text A"
           +"FieldB": "text B"
        }
    }
}

此行为由架构规定。说实话,这是一个意外的转折