WSDL/SOAP测试使用soapui

sam*_*mir 22 wsdl web-services soapui

我用soapui测试了我的Web服务(wsdl/soap).我有错误: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)
Run Code Online (Sandbox Code Playgroud)

Lad*_*nka 38

definitions 是WSDL的根元素,因此看起来您没有加载WSDL.

编辑:

我测试了它,看起来整个问题都在于您的Web服务器.您的Web服务器将WSDL返回给浏览器,但它不会将其返回给任何工具,因为这些工具使用非常简单的HTTP请求而没有很多HTTP头.缺少一个标题是Accept.一旦此标头未包含在请求中,您的服务器就会抛出HTTP 400 Bad请求.

简单的继续方法是在浏览器中打开WSDL,将wsdl保存到文件并将该文件导入soapUI而不是URL中的WSDL.

  • 我使用 IE/Firefox 查看 WSDL,并使用 Visual studio / svcutil(用于创建服务代理的 MS 工具)来模拟soapUI 行为(我家里没有安装soapUI)。我使用 Fiddler 来比较 HTTP 与服务器的通信,并测试不同的 HTTP 请求,直到找到导致问题的差异。 (2认同)

小智 6

您可以尝试在Web浏览器中打开wsdl并使用.wsdl扩展名保存.并将SOAP UI项目中的WSDL设置为此.wsdl文件.这确实有效.


Mik*_*ica 5

另一种可能性是您需要在SoapUI的服务URL的末尾添加?wsdl。那是因为我习惯了不需要它的WCFClient而得到了我。


Căt*_*doi 5

  • 是的,首先确保您将“?wsdl”添加到“http......whatever.svc”链接中。
    • 但这并没有解决我的问题。我必须从头开始创建一个新的 WCF 项目并手动复制代码。这解决了它。祝你好运。

最重要的是!

当您更改代码中的命名空间时,还要确保在 web.config 中更改它!