У меня есть веб-служба, которая следует некоторой семантике службы SOAP, но они не предоставляют WSDL для указанной службы. Вместо этого они предоставляют XSD, с помощью которого я реверс-инжиниринг WSDL. Казалось, что дела идут хорошо, даже до такой степени, что она может
- создать WSDL
- Импорт XSD как части WSDL с использованием тега
xsd:import
- Создание оболочек Java с CXF
- Позвоните в службу.
Теперь то, что я получаю, когда звоню в службу, является исключением:
INFO: Creating Service {http://service.something.net/xml}QueryService from WSDL: file:/C:/mydocs/Work/project/my-service.wsdl
Aug 09, 2011 1:22:34 PM org.apache.cxf.phase.PhaseInterceptorChain doDefaultLogging
WARNING: Interceptor for {http://service.something.net/xml}QueryService#{http://servicesomething..../xml}QueryRequest has thrown exception, unwinding now
org.apache.cxf.binding.soap.SoapFault: "http://service.something.net/xml", the namespace on the "QueryResponse" element, is not a valid SOAP version.
WSDL можно найти в этой сущности , а XSD - это то, что я получил от продавца.
Что означает ошибка? Что я мог сделать неправильно при генерации файла .wsdl
?
Редактировать 1
Я вручную проверил сервис от поставщика услуг, и мне кажется, что все в порядке:
<?xml version="1.0" encoding="UTF-8"?>
<Envelope xmlns="http://schemas.xmlsoap.org/soap/envelope/">
<Body>
<QueryResponse xmlns="http://service.something.net/xml">
....
</QueryResponse>
</Body>
</Envelope>
Если только я что-то упустил, не должно быть никаких причин, по которым CXF даже хочет, чтобы QueryResponse
был элементом SOAP, поскольку его пространство имен не SOAP, а http://service.something.net/xml
.