Ответ SOAP не правильно сериализован во Flex 4 - PullRequest
1 голос
/ 09 марта 2011

Я вижу, что некоторые узлы моего ответа SOAP исчезают во Flex 4. Я использую <mx:WebService>, который написан с использованием PHP / nusoap, и 99% ответов не правильно сериализуются во Flex.По какой-то причине этот фрагмент вызывает проблемы:

RAW XML:

<data xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="tns:reportData[1]">
  <item xsi:type="tns:reportData">
    <name xsi:type="xsd:string">Tue.  8 Mar. 2011</name>
    <year xsi:type="xsd:int">2011</year>
    <month xsi:type="xsd:int">3</month>
    <day xsi:type="xsd:int">8</day>
    <counts xsi:type="SOAP-ENC:Array" SOAP-ENC:arrayType="xsd:double[3]">
      <item xsi:type="xsd:double">26</item>
      <item xsi:type="xsd:double">11</item>
      <item xsi:type="xsd:double">11</item>
    </counts>
  </item>
</data>

Единственный элемент для отображения в Flex ProxyObject - это «имя».Все остальные значения просто игнорируются.

WSDL определяет reportData как:

 <xsd:complexType name="reportData">
  <xsd:all>
   <xsd:element name="name" type="xsd:string"/>
   <xsd:element name="url" type="xsd:string"/>
   <xsd:element name="year" type="xsd:int"/>
   <xsd:element name="month" type="xsd:int"/>
   <xsd:element name="day" type="xsd:int"/>
   <xsd:element name="hour" type="xsd:int"/>
   <xsd:element name="counts" type="tns:reportCountList"/>
   <xsd:element name="breakdown_total" type="tns:reportCountList"/>
   <xsd:element name="breakdown" type="tns:reportDataList"/>
  </xsd:all>
 </xsd:complexType>

Есть идеи, почему этот XML не будет корректно десериализоваться?

1 Ответ

0 голосов
/ 11 марта 2011

Из комментариев выше:

Согласно w3.org/TR/2001/REC-xmlschema-1-20010502/#element-all minOccurs по умолчанию 1 означает, что его необходимо явно установитьв minOccurs = 0 в WSDL.

В приведенном выше ответе SOAP отсутствует обязательный элемент url.Изменение WSDL для явного определения элемента url как необязательного minOccurs="0" устраняет проблему.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...