Test WSDL / SOAP avec soapui
j'ai testé mes services web (wsdl/soap) avec soapui. et j'ai les erreurs : http / log : erreur 400 mauvaise requête.
Quel peut être l'erreur s'il vous plaît avec mon wsdl ?
/ / erreur de log :
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.access0(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.run(SwingWorker.java:140)
at java.lang.Thread.run(Thread.java:637)
6 réponses
definitions
est un élément racine de WSDL donc il semble que vous ne chargiez pas WSDL.
Edit:
je l'ai testé et il semble que tout le problème est avec votre serveur web. Votre serveur web renvoie WSDL au navigateur mais il ne le renvoie à aucun outil car ces outils utilisent des requêtes HTTP très minimalistes sans de nombreux en-têtes HTTP. L'un des en-têtes manquants est Accept
. Une fois que cet en-tête n'est pas inclus dans la requête, votre serveur lance HTTP 400 Bad demande.
l'approche facile pour continuer est d'ouvrir WSDL dans le navigateur, de sauvegarder la wsdl dans un fichier et d'importer ce fichier à soapUI au lieu de la WSDL à partir de L'URL.
vous pouvez essayer d'ouvrir la wsdl dans le navigateur web et de sauvegarder avec .extension wsdl. Et mettez le WSDL dans le projet SOAP UI à ceci .fichier wsdl. Cela fonctionne vraiment.
une autre possibilité est que vous devez ajouter ?wsdl à la fin de votre url de service pour SoapUI. Celui-là m'a eu car je suis habitué à WCFClient qui n'en avait pas besoin.
-
Oui, d'abord s'assurer que vous avez ajouté "?wsdl" à votre "http......quoi.svc" lien.
- ça n'a pas réglé mon problème. J'ai dû créer un nouveau projet WCF dès le début et copier manuellement le code. Qu'il fixe. Bonne chance.
et le plus important!!!
lorsque vous changez un namespace dans votre code, assurez-vous également de le changer dans web.config!
j'ai fait face à la même exception en essayant de tester mes services web déployés à WSO2 ESB.
WSO2 a généré à la fois wsdl et wsdl2. J'ai essayé de passer une URL wsdl2 et j'ai eu l'exception ci-dessus. Quick googling m'a montré, que l'une des différences entre wsdl1.1 et wsdl2.0 remplace "definitions" element par "description". Aussi, j'ai découvert que SoapUI ne supporte pas wsdl2.
Donc, pour moi, le solution a été d'utiliser wsdl1 url au lieu de wsdl2.
une possibilité probable est que votre navigateur atteigne votre service web par l'intermédiaire d'un proxy, et SoapUI n'est pas configuré pour utiliser ce proxy. Par exemple, je travaille dans un environnement d'entreprise et bien que mon IE et FireFox puissent accéder à des sites web externes, mon SoapUI ne peut accéder qu'à des services web internes.
la solution la plus simple est d'ouvrir la WSDL dans un navigateur et de la sauvegarder sur un .le fichier xml, et basez votre projet SoapUI là-dessus. Cela ne fonctionnera pas si votre WSDL s'appuie sur des XSDs externes qu'il peuvent pas faire, cependant.