Я очень плохо знаком с веб-сервисами, поэтому, пожалуйста, прости мое невежество.Я пытаюсь использовать веб-сервис, для которого мне был предоставлен wsdl.Есть несколько сложных типов, возвращаемых веб-сервисом.Вот пример одного из них:
<complexType name="DL-TankInventory">
<sequence>
<element name="DateTime" type="xsd:long" minOccurs="1" maxOccurs="1"/>
<element name="TankNumber" type="xsd:short" minOccurs="1" maxOccurs="1"/>
<element name="ProductCode" type="xsd:byte" minOccurs="1" maxOccurs="1"/>
<element name="StatusBits" type="xsd:short" minOccurs="1" maxOccurs="1"/>
<element name="ProductVolume" type="xsd:double" minOccurs="1" maxOccurs="1"/>
<element name="ProductTcVolume" type="xsd:double" minOccurs="1" maxOccurs="1"/>
<element name="Ullage" type="xsd:double" minOccurs="1" maxOccurs="1"/>
<element name="ProductHeight" type="xsd:double" minOccurs="1" maxOccurs="1"/>
<element name="WaterHeight" type="xsd:double" minOccurs="1" maxOccurs="1"/>
<element name="WaterVolume" type="xsd:double" minOccurs="1" maxOccurs="1"/>
<element name="AvgFuelTemperature" type="xsd:double" minOccurs="1" maxOccurs="1"/>
</sequence>
</complexType>
Я использовал WSDL2Java для создания клиентских классов, и там все выглядит нормально.Он создал класс с именем DLTankInventory (такой же, как complexType без тире).Когда я вызываю метод, который должен вернуть этот объект DLTankInventory, он выдает исключение ClassCastException, сказав, что он не может привести ArrayList к DLTankInventory.
Я использовал программу soapUI для тестирования веб-службы, и она работает, но она возвращает несколько объектов DLTankInventory (может быть, возвращает массив?).Похоже, что инструмент WSDL2Java должен возвращать только один объект DLTankInventory.Что я делаю неправильно?При необходимости я могу опубликовать больше кода wsdl или клиента.
Спасибо
- РЕДАКТИРОВАТЬ Я вошел в класс Stub и изменил функцию для приведения возвращаемого объекта в ArrayList объекта DLTankInventory.и, кажется, работает сейчас.Мой вопрос по-прежнему заключается в том, почему WSDL2Java хотел, чтобы он возвращал один объект.WSDL не так?Мне сказали, что это правильно.