服务器 soap 响应中的额外元素
Extra element in the server soap response
我有一个 wsdl 架构。
我正在生成一个 class 的答案,其中包含一个字段
中的对象列表
<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>
在运行过程中,我的controller就生成了这样一个response结构,在response中需要接收的就是这样一个结构
{
"ClassOfResponse": {
"code":0,
"message":"Consulta Exitosa",
"listValues": [
{
"FieldA": "text A",
"FieldB": "text B"
},
{
"FieldA": "text A2",
"FieldB": "text B2"
},
]
}
}
客户端的 soap 响应包含一个额外的元素 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"
}
]
}
}
中间的值从哪里来?
一个字段中包含多个数据的 SOAP 方案的典型行为是 classes
的数组
+"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"
}
]
}
}
...字段中的单个数据是 class
+"ClassOfResponse": {#617
+"code": 0
+"message": "Consulta Exitosa"
+"listValues": {#618
+"Value": {#619
+"FieldA": "text A"
+"FieldB": "text B"
}
}
}
此行为受架构约束。说实话,意想不到的转折
我有一个 wsdl 架构。 我正在生成一个 class 的答案,其中包含一个字段
中的对象列表<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>
在运行过程中,我的controller就生成了这样一个response结构,在response中需要接收的就是这样一个结构
{
"ClassOfResponse": {
"code":0,
"message":"Consulta Exitosa",
"listValues": [
{
"FieldA": "text A",
"FieldB": "text B"
},
{
"FieldA": "text A2",
"FieldB": "text B2"
},
]
}
}
客户端的 soap 响应包含一个额外的元素 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"
}
]
}
}
中间的值从哪里来?
一个字段中包含多个数据的 SOAP 方案的典型行为是 classes
的数组+"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"
}
]
}
}
...字段中的单个数据是 class
+"ClassOfResponse": {#617
+"code": 0
+"message": "Consulta Exitosa"
+"listValues": {#618
+"Value": {#619
+"FieldA": "text A"
+"FieldB": "text B"
}
}
}
此行为受架构约束。说实话,意想不到的转折