Форум Flasher.ru

Форум Flasher.ru (http://www.flasher.ru/forum/index.php)
-   Flex (http://www.flasher.ru/forum/forumdisplay.php?f=84)
-   -   Передача параметров WebService (http://www.flasher.ru/forum/showthread.php?t=152705)

Haiat 23.03.2011 19:55

Допустим я вызываю следующий метод "searchFlights".

смотрю в описании

Код:

<xs:complexType name="searchFlights">
<xs:sequence>
<xs:element name="parameters" type="tns:FlightSearchParameters" minOccurs="0" />
</xs:sequence>
</xs:complexType>

далее ищю FlightSearchParameters

Код:

<xs:complexType name="FlightSearchParameters">
  <xs:complexContent>
    <xs:extension base="tns:BaseParameters">
      <xs:sequence>
        <xs:element name="airlines">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="airline" type="tns:DictionaryItem" maxOccurs="unbounded" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="route">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="segment" type="tns:RouteSegment" maxOccurs="unbounded" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="adults" type="xs:int" />
        <xs:element name="children" type="xs:int" />
        <xs:element name="infants" type="xs:int" />
        <xs:element name="serviceClass" type="tns:classOfService" minOccurs="0" />
        <xs:element name="directOnly" type="xs:boolean" />
        <xs:element name="mixedVendors" type="xs:boolean" />
        <xs:element name="dateTolerance" type="xs:int" />
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

смотрю по BaseParameters

Код:

<xs:complexType name="BaseParameters" abstract="true">
<xs:sequence>
<xs:element name="authContext" type="tns:AuthContext" />
</xs:sequence>
</xs:complexType>

и AuthContext

Код:

<xs:complexType name="AuthContext">
<xs:sequence>
<xs:element name="locale" type="xs:string" />
<xs:element name="agent" type="xs:string" />
<xs:element name="password" type="xs:string" />
<xs:element name="salesPoint" type="xs:string" />
<xs:element name="customer" type="xs:string" minOccurs="0" />
</xs:sequence>
</xs:complexType>

вот не совсем понятно, следующее: понятно как передаются параметры adults, children... но ведь они вложены во внешний узел <xs:extension base="tns:BaseParameters"> , в котором как параметр указан BaseParameters. но он же тоже передается как дерево узлов, через AuthContext

пытаюсь это структурировать, но что то даже не очень хорошо понимаю как это будет выглядеть

alatar 23.03.2011 20:13

complexType в контексте as3 это объекты, element – свойства объекта, name у элемента – имя свойства, extension (судя по-всему) указывает на то, что FlightSearchParameters наследуется от BaseParameters.

Haiat 23.03.2011 20:14

а sequence?

alatar 23.03.2011 20:17

Перечисление свойств.

Haiat 23.03.2011 20:38

то есть мне нужно описывать через объекты? или реально чисто XML дать запрос

и если реально просто через XML запрос, то что значит наследование в данном случае,

alatar 23.03.2011 22:44

Цитата:

или реально чисто XML дать запрос
SOAP это, по-сути, xml
Цитата:

то что значит наследование в данном случае
Ребенок наследует свойства родителя.

Haiat 23.03.2011 23:15

если <xs:sequence> - перечисление свойств, то получается как то так

Код:

<parametres airlines='**' route='**' adults='**' ... />
Код:

<xs:complexType name="FlightSearchParameters">
  <xs:complexContent>
    <xs:extension base="tns:BaseParameters">
      <xs:sequence>
        <xs:element name="airlines">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="airline" type="tns:DictionaryItem" maxOccurs="unbounded" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="route">
          <xs:complexType>
            <xs:sequence>
              <xs:element name="segment" type="tns:RouteSegment" maxOccurs="unbounded" />
            </xs:sequence>
          </xs:complexType>
        </xs:element>
        <xs:element name="adults" type="xs:int" />
        <xs:element name="children" type="xs:int" />
        <xs:element name="infants" type="xs:int" />
        <xs:element name="serviceClass" type="tns:classOfService" minOccurs="0" />
        <xs:element name="directOnly" type="xs:boolean" />
        <xs:element name="mixedVendors" type="xs:boolean" />
        <xs:element name="dateTolerance" type="xs:int" />
      </xs:sequence>
    </xs:extension>
  </xs:complexContent>
</xs:complexType>

а куда тогда вставляются свойства от BaseParameters?

или я не совсем правильно понимаю. и почему то сомнительно что airlines это такое свойство

если element Это свойство, то как у него еще element есть?
не может ли быть sequence это рядов вложенных объектов?

alatar 24.03.2011 00:23

Цитата:

то получается как то так
не совсем
Код:

<parametres>
    <airlines>
        <airline>**</airline>
        ...
    </airlines>
    <route>**</route>
    ...
</parametres>


Haiat 24.03.2011 00:31

а в атрибуты к parametres идут свойства agent password? или как то по другому они?

Спасибо

wvxvw 24.03.2011 00:48

Что бы я вам советовал сделать:
Выберите сначала все типы объектов (более того, если уж сервисы на Яве - может вам дадут Ява код посмотреть, может понятнее будет). После чего Создайте AS3 классы с такими же именами и свойствами. После чего, отнаследуйте их всех от какого-нибудь DAO-like (Data Access Object) класса с методом toXML() который будет обобщенно конвертировать класс (его публичные свойства) в XML. Соответственно, если свойство / элемент коллекции в свойстве является наследником DAO - то при такой вот "сериализации" вызвать у него тоже toXML(). Это примерно то же самое, что делает фреймворк, когда подгатавливает ответ сервиса. Но если вы это сами сделаете руками один раз - быстрее поймете, что от вас требуется.
Кса sequence - это скорее вектор все-таки, если так к этому подходить.


Часовой пояс GMT +4, время: 20:56.

Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.