Вопрос:
Я хочу создать веб-сервис, и я создаю проект на основе рабочего проекта. Он работает со Storm и Boomerang-SOAP и REST Client.
Бумеранг генерирует такой запрос:
<x:Envelope xmlns:x=»http://schemas.xmlsoap.org/soap/envelope/» xmlns:wse=»http://wservices.yt/»> <x:Header/> <x:Body> <wse:PerformTransaction> <request> <password>?</password> <username>?</username> <amount>0</amount> <parameters> <paramKey>?</paramKey> <paramValue>?</paramValue> </parameters> <serviceId>0</serviceId> <transactionId>0</transactionId> <transactionTime>2016-10-19T00:00:00</transactionTime> </request> </wse:PerformTransaction> </x:Body> </x:Envelope>
и это нормально, но я должен получить следующий запрос:
<soapenv:Envelope xmlns:soapenv=»http://schemas.xmlsoap.org/soap/envelope/»> <soapenv:Body> <ns1:PerformTransactionArguments xmlns:ns1=»http://wservices.yt/» xmlns:xsi=»http://www.w3.org/2001/XMLSchema-instance» xsi:type=»ns1:PerformTransactionArguments»> <password>12345</password> <username>test</username> <amount>150000</amount> <parameters> <paramKey>customer_id</paramKey> <paramValue>6324357</paramValue> </parameters> <parameters> <paramKey>pin</paramKey> <paramValue>12345678</paramValue> </parameters> <serviceId>1</serviceId> <transactionId>437</transactionId> <transactionTime>2011-04-26T18:07:22</transactionTime> </ns1:PerformTransactionArguments> </soapenv:Body> </soapenv:Envelope>
Когда я тестирую второй запрос веб-службы, он продолжает получать ошибку:
Message part PerformTransactionArguments was not recognized. (Does it exist in service WSDL?)
В wsdl класс записывается как performTransactionArguments. Я не знаю, как это решить (впервые я столкнулся с soap & wsdl). Я потратил тщетно около недели, поэтому, пожалуйста, помогите мне решить проблему.
Я нахожу много похожих вопросов, но я не нашел никакого решения.
один из них: исключение при попытке вызвать веб-сервис
Если фрагмент кода или настройки я могу показать, но теперь я не знаю, что добавить здесь
Ответ №1
Вы вызываете операцию (PerformTransactionArguments), которая не существует. Первый запрос (PerformTransaction) работает нормально, потому что вы уже можете его использовать в своем контракте wsdl.