Похоже, вы выполняете сначала контракт (у вас в качестве отправной точки WSDL). Разработка клиента SOAP.
Вы должны где-то подключиться, и служба является "статической" (изменить нельзя))
1, если невозможно изменить службу SOAP (например, потому что она не ваша) и ваш WSDL правильный (из запущенной службы), вы не сможете этого сделать.
2, если имеющийся у вас WSDL устарел и вы видите типы возвращаемых данных, которых нет в WSDL, просто получите новый WSDL, сгенерируйте другие клиентские классы и используйте их.
Вы должны подключиться к услуге, которая принадлежит вам (как на стороне клиента, так и на стороне сервера, разработанной вами)
Это более интересная часть, и здесь у нас есть два разных способа:
1, Разработка первого веб-сервиса по контракту (я предпочитаю это)
Вы создали WSDL с нуля для каждой операции и сложного типа. Вы должны создать новый BaggageReply complextype и изменить операцию аналогично следующему (случайный пример wsdl):
<message name="GetLastTradePriceInput">
<part name="body" element="xsd1:TradePriceRequest"/>
</message>
<message name="GetLastTradePriceOutput">
<part name="body" element="xsd1:TradePrice"/>
</message>
<portType name="StockQuotePortType">
<operation name="GetLastTradePrice">
<input message="tns:GetLastTradePriceInput"/>
<output message="tns:GetLastTradePriceOutput"/>
</operation>
</portType>
Ключ -
2, сначала разработайте код (вы начали писать свои собственные классы java)
В этом случае вы опытный разработчик, который очень хорошо знает, как это сделать :) Если предположить, что у вас есть код на стороне сервера, я бы скопировал входной класс ( com.amadeus.xml.bla_bla.IdentifyBaggage) переименуйте его в выходной класс и обновите localName и пространство имен QName, членов, сеттеров / получателей и т. Д. И замените возвращаемое значение void операции на этот класс. Последнее, что нужно сделать, это обновить операцию или веб-метод, чтобы в конце возвращать BaggageReply . Конечно, ваш клиент тоже должен быть модифицирован, чтобы сделать что-то с этим ответом.