Вопрос

Я новый в веб-сервисах. Я столкнулся с некоторыми проблемами. На стороне сервера я использую Spring-WS. На стороне клиента я использую JAX-WS. С помощью инструмента WSIMPort я создал классы Java в соответствии с моим WSDL.

Все работает нормально, но по какой-то причине JAX-WS не разбирает массивы и список правильно, все списки пусты

Я абсолютно уверен, что ответ имеет правильную форму, проверил его с помощью SOAPUI, также использую перехватчик регистрации, чтобы войти в систему.

Ниже - фрагменты ответа

Ответ выглядит так

<SOAP-ENV:Envelope xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/">
   <SOAP-ENV:Header/>
   <SOAP-ENV:Body>
      <firstElementResponse>
         <name>hello world text</name>
         <name>hello world text</name>
         <name>hello world text</name>
      </firstElementResponse>
   </SOAP-ENV:Body>
</SOAP-ENV:Envelope>

и фрагменты WSDL

<xs:complexType name="sayHelloResponseType">
  <xs:sequence>
    <xs:element maxOccurs="unbounded" minOccurs="0" name="name" type="xs:string"/>
  </xs:sequence>
</xs:complexType>

Чтобы генерировать код клиента, я использую WSIMPORT.

SayHelloResponseType resp = serv.sayHello(r);
List<String> name = resp.getName();
System.out.println(name.size());

Спасибо. Любая помощь будет высоко оценена.

Это было полезно?

Решение

Кажется, это просто неверный ответ, который не математика WSDL Shema. Ни Spring-WS ни JAX-WS бросает исключение. Это просто разбирает недействительные данные в пустой список без каких-либо домов.

org.springframework.ws.soap.server.endpoint.interceptor.PayloadValidatingInterceptor спас мой день

вероятно, я должен настроить ведение журнала для JAX-W, чтобы избежать его в следующий раз

Другие советы

Я только что ответил на подобный вопрос в Как я могу обрабатывать Castor Unmarshaling SOAP-сообщений, когда пространство имен определяется внутри тега операции? - Если вы используете SPRILL-WS, вы пишете контракт-первые веб-сервисы, поэтому убедитесь, что вы действительно придерживаетесь этого контракта. Поместите все свои элементы в пространство имен, убедитесь, что ваша XSD-схема ожидает, что элементы будут квалифицированы и объявить NS-URI и NS-префиксы в ваших сопоставлениях касторовых. Это стоит усилия.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top