web-services - schemas - soapui tutorial pdf español
Prueba WSDL/SOAP con soapui (6)
He probado mis servicios web (wsdl / soap) con soapui. y tengo los errores: http / log: error 400 BAD REQUEST.
¿Cuál puede ser el error por favor con mi wsdl?
registro de errores :
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)
Me enfrenté a la misma excepción al intentar probar mis servicios web implementados en WSO2 ESB.
WSO2 generó tanto wsdl como wsdl2. Intenté pasar una URL wsdl2 y obtuve la excepción anterior. La búsqueda rápida en Google me mostró que una de las diferencias entre wsdl1.1 y wsdl2.0 es reemplazar el elemento ''definiciones'' con ''descripción''. Además, descubrí que SoapUI no es compatible con wsdl2 .
Por lo tanto, para mí, la solución fue usar wsdl1 url en lugar de wsdl2.
Otra posibilidad es que necesite agregar? Wsdl al final de su URL de servicio para SoapUI. Ese me consiguió ya que estoy acostumbrado a WCFClient que no lo necesitaba.
Puede intentar abrir el wsdl en el navegador web y guardar con la extensión .wsdl. Y configure el WSDL en el proyecto de IU de SOAP en este archivo .wsdl. Esto realmente funciona.
Una posibilidad probable es que su navegador llegue a su servicio web a través de un proxy y SoapUI no esté configurado para usar ese proxy. Por ejemplo, trabajo en un entorno corporativo y mientras mi IE y FireFox pueden acceder a sitios web externos, mi SoapUI solo puede acceder a servicios web internos.
La solución fácil es simplemente abrir el WSDL en un navegador, guardarlo en un archivo .xml y basar su proyecto de SoapUI en eso. Sin embargo, esto no funcionará si su WSDL se basa en XSD externas a las que no puede acceder.
definitions
son un elemento raíz de WSDL, por lo que parece que no está cargando WSDL.
Editar:
Lo probé y parece que todo el problema está relacionado con su servidor web. Su servidor web devuelve WSDL al navegador, pero no lo hace a ninguna herramienta porque estas herramientas utilizan solicitudes HTTP muy minimalistas sin muchos encabezados HTTP. Uno de los encabezados que faltan es Accept
. Una vez que este encabezado no esté incluido en la solicitud, su servidor arrojará una solicitud incorrecta HTTP 400.
El enfoque fácil para continuar es abrir WSDL en el navegador, guardar el wsdl en un archivo e importar ese archivo a soapUI en lugar de a WSDL desde la URL.
- sí, primero asegúrese de haber agregado "? wsdl" a su enlace "http ...... whatever.svc".
- Aunque eso no solucionó mi problema. Tuve que crear un nuevo proyecto de WCF desde el principio y copiar manualmente el código. Eso lo arregló. Buena suerte.
Y lo más importante !!!
Cuando cambie un espacio de nombres en su código, ¡también asegúrese de cambiarlo en web.config!