Java. Проверьте сообщение SOAP против WSDL

Мне нужно проверить сообщение SOAP против WSDL ? (Точно так же, что файл XML может быть проверен против XSD схемы).

Я не звоню ни одного WebService; У меня просто есть сообщение SOAP и A WSDL , и мне необходимо проверить, что сообщение SOAP является правильным. Потом не призывая WebService или впоследствии.

Мне нужно сделать эту проверку в рамках программы Java. Знаете ли вы о небольшой библиотеке Java, чтобы сделать это?

PS: Я знаю, что несколько JAX-WS библиотек могут подтвердить запрос / ответ, когда вы называете WebService. Но опять же, я не называю WebService; У меня есть простое сообщение SOAP , а WSDL , и мне нужна функция, которая проверяет сообщение SOAP против WSDL .

PS: Я также знаю, что есть инструменты, которые могут сделать это, например SOAPUI и XMLSPY . Опять же, мне нужно сделать эту проверку в моей программе Java.

PS: Я знаю, что я могу извлечь частью тела SOAP , и подтвердить его против XSD . Однако я хотел бы подтвердить все SOAP сообщение против WSDL .

24
задан adranale 19 May 2016 в 13:44
поделиться

6 ответов

Если вы создаете клиент веб-сервиса, использующий генератор кода на основе Apache CXF или Apache Axis 2, высока вероятность того, что код вашего веб-сервиса будет работать нормально, если и поставщик веб-сервиса, и ваш клиент находятся в одной и той же версии Стандарты SOAP / WS *. На основе API, который вы выбрали для вызова веб-службы, вы можете увидеть, можно ли использовать возможность ведения журнала этого API для распечатки сгенерированного запроса SOAP.

Другим подходом может быть использование такого инструмента, как SOAPUI. Вы можете попытаться настроить фиктивный веб-сервис с использованием пользовательского интерфейса SOAP на основе имеющегося у вас WSDL, а затем вызвать тестовый клиент своего веб-сервиса, вызвав фиктивный сервис. См. Ссылку SOAP UI здесь http://www.soapui.org/Getting-Started/web-service-sample-project/1-Web-Service-Mocking.html

1
ответ дан 29 November 2019 в 00:33
поделиться

Вы можете создать заглушку с помощью имеющегося у вас WSDL, а затем сделать запрос к заглушке с помощью вашего XML-запроса. Если это идет правильно, ваш запрос верен.

Вы можете импортировать WSDL в свой проект, а затем сделать вызов в службу заглушки, используя ваш XML. Таким образом, вы можете вносить изменения в проверки без каких-либо изменений в коде.

0
ответ дан 29 November 2019 в 00:33
поделиться

Попробуйте

  1. Используйте WSDL и создайте Jax-RPC-прокси
  2. Создайте обработчик JAX RPC веб-службы и зарегистрируйте его в справочнике веб-службы. См. эту ссылку , чтобы узнать, как создавать обработчики веб-сервисов
  3. В обработчике попробуйте приведенный ниже код в public boolean handleRequest(MessageContext mc), добавьте эти строки

    mc.setProperty("USE_TEST_FILE", <your response in .xml file>);
    return false;
    
  4. В public boolean handleResponse(MessageContext mc)

    String testFileName = (String) mc.getProperty("USE_TEST_FILE");
    InputStream instream = <read file as an input stream>
    SOAPMessageContext smc = (SOAPMessageContext) mc;
    SOAPMessage message = smc.getMessage();
    SOAPPart soapPart = message.getSOAPPart();
    soapPart.setContent(new StreamSource(instream));
    smc.setMessage(message);
    return false;
    

теперь запустят ваш прокси .. прокси потерпит неудачу, если сообщение недопустимо для WSDL

0
ответ дан 29 November 2019 в 00:33
поделиться

Поскольку сообщение SOAP представляет собой xml, вы можете проверить все сообщение по xsd. Например, я нашел эту схему для сообщения SOAP. Вы можете:

  1. Извлечь схему из вашего wsdl,
  2. Проверить сообщение по схеме из wsdl и мыльной схемы.

Если вы хотите проверить соответствие конкретному WSDL, вы можете подготовить свою схему вручную: просто поместите корневой элемент вашего сообщения вместо этой части:

<xs:sequence>
<xs:any namespace="##any" minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
</xs:sequence>

в схему SOAP.

-1
ответ дан 29 November 2019 в 00:33
поделиться

Пожалуйста, ознакомьтесь с Apache AXIS2 API.

-3
ответ дан 29 November 2019 в 00:33
поделиться

Проверка по схеме конверта SOAP , затем извлечение тела и заголовков и проверка по конкретной схеме. Должно быть достаточно просто.

-1
ответ дан 29 November 2019 в 00:33
поделиться
Другие вопросы по тегам:

Похожие вопросы: