Справочная информация:
Мне нужно использовать существующий веб-сервис (SOAP через http), у которого есть несколько проблем:
1) wsdl на сервере даже не похож на веб-сервис, как описано в их документации, которая включает в себя совершенно другой файл wsdl
2) Файл wsdl, предоставленный вместе с их документацией, похоже, близок к описанию веб-службы на сервере, но когда я сгенерировал код Java-клиента с помощью cxf и использовал его для доступа к веб-службе, cxf выдает исключения, подобные следующим
javax.xml.bind.UnmarshalException: unexpected element (uri:"http://us-labs.companyxyz.com/", local:"searchResponse"). Expected elements are <{http://companyxyz.com/xyz-xml/2.0/}searchResponse>
... 33 more
Я не эксперт по SOAP, но при условии, что это означает, что пространства имен в их ответах не совпадают с определенными в wsdl.
Поскольку мое приложение написано на java, я смог подключиться и получить ответ, используя http-клиент commons и ручной SOAP-запрос, поэтому в худшем случае я могу вернуться к этому и проанализировать ответ, чтобы получить то, что мне нужно.
Мои вопросы:
- Правильно ли я истолковал исключение?
- Если нет: какие-либо предложения о том, как я могу это отладить?
- Если да: может ли кто-нибудь предложить лучшие альтернативы ручному созданию http-запросов и синтаксическому анализу xml вручную? (Получение правильного wsdl, к сожалению, не вариант)
Заранее спасибо.