Тест WSDL / SOAP с мылом - PullRequest
       13

Тест WSDL / SOAP с мылом

22 голосов
/ 05 июня 2011

Я проверил свои веб-сервисы (wsdl / soap) с soapui. и у меня есть ошибки: http / log: ошибка 400 BAD REQUEST.

В чем может быть ошибка пожалуйста с моим wsdl?

ошибка / журнал:

un Jun 05 14:10:37 CEST 2011:ERROR:javax.wsdl.WSDLException: WSDLException (at /html): faultCode=INVALID_WSDL: Expected element '{http://schemas.xmlsoap.org/wsdl/}definitions'.
   javax.wsdl.WSDLException: WSDLException (at /html): faultCode=INVALID_WSDL: Expected element '{http://schemas.xmlsoap.org/wsdl/}definitions'.
    at com.ibm.wsdl.xml.WSDLReaderImpl.checkElementName(Unknown Source)
    at com.ibm.wsdl.xml.WSDLReaderImpl.parseDefinitions(Unknown Source)
    at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
    at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
    at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
    at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
    at com.ibm.wsdl.xml.WSDLReaderImpl.readWSDL(Unknown Source)
    at com.eviware.soapui.impl.wsdl.support.wsdl.WsdlInterfaceDefinition.load(WsdlInterfaceDefinition.java:48)
    at com.eviware.soapui.impl.wsdl.support.wsdl.WsdlContext.loadDefinition(WsdlContext.java:66)
    at com.eviware.soapui.impl.wsdl.support.wsdl.WsdlContext.loadDefinition(WsdlContext.java:30)
    at com.eviware.soapui.impl.support.definition.support.AbstractDefinitionContext.cacheDefinition(AbstractDefinitionContext.java:264)
    at com.eviware.soapui.impl.support.definition.support.AbstractDefinitionContext.access$400(AbstractDefinitionContext.java:44)
    at com.eviware.soapui.impl.support.definition.support.AbstractDefinitionContext$Loader.construct(AbstractDefinitionContext.java:230)
    at com.eviware.soapui.support.swing.SwingWorkerDelegator.construct(SwingWorkerDelegator.java:46)
    at com.eviware.soapui.support.swing.SwingWorker$2.run(SwingWorker.java:140)
    at java.lang.Thread.run(Thread.java:637)

Ответы [ 6 ]

36 голосов
/ 05 июня 2011

definitions является корневым элементом WSDL, поэтому похоже, что вы не загружаете WSDL.

Редактировать:

Я проверил его, и похоже, что вся проблема связана с вашей сетьюсервер.Ваш веб-сервер возвращает WSDL в браузер, но не возвращает его никаким инструментам, поскольку эти инструменты используют очень минималистичные HTTP-запросы без большого количества HTTP-заголовков.Один из отсутствующих заголовков - Accept.Если этот заголовок не включен в запрос, сервер отправляет неверный запрос HTTP 400.

Чтобы продолжить, достаточно открыть WSDL в браузере, сохранить wsdl в файл и импортировать этот файл в soapUI вместоWSDL от URL.

5 голосов
/ 04 октября 2012

Вы можете попробовать открыть wsdl в веб-браузере и сохранить с расширением .wsdl. И установите WSDL в проекте SOAP UI для этого файла .wsdl. Это действительно работает.

4 голосов
/ 17 августа 2012

Другая возможность заключается в том, что вам нужно добавить? Wsdl в конце URL-адреса службы для SoapUI.Тот получил меня, поскольку я привык к WCFClient, который не нуждался в этом.

3 голосов
/ 20 ноября 2013
  • да, сначала убедитесь, что вы добавили "? Wsdl" к своей ссылке "http ...... what.svc".
    • Это не решило мою проблему.Мне пришлось создать новый проект WCF с самого начала и вручную скопировать код.Это исправило это.Удачи.

И самое главное!.config!

1 голос
/ 23 октября 2014

Я столкнулся с тем же исключением, когда пытался протестировать свои веб-сервисы, развернутые в WSO2 ESB.

WSO2 генерирует как wsdl, так и wsdl2.Я попытался передать URL-адрес wsdl2 и получил вышеуказанное исключение.Быстрый поиск в Google показал мне, что одно из различий между wsdl1.1 и wsdl2.0 заключается в замене элемента «определения» словом «описание».Кроме того, я обнаружил, что SoapUI не поддерживает wsdl2 .

Поэтому для меня решение было использовать wsdl1 url вместо wsdl2.

0 голосов
/ 15 июня 2011

Вероятная вероятность, что ваш браузер достигает вашего веб-сервиса через прокси, и SoapUI не настроен для использования этого прокси.Например, я работаю в корпоративной среде, и хотя мои IE и FireFox могут получать доступ к внешним веб-сайтам, мой SoapUI может получать доступ только к внутренним веб-службам.

Простое решение состоит в том, чтобы просто открыть WSDL в браузере, сохранить его в XML-файле и на этом основывать свой проект SoapUI.Однако это не будет работать, если ваш WSDL использует внешние XSD, к которым он не может добраться.

...