Web services 使用soapui进行WSDL/SOAP测试

Web services 使用soapui进行WSDL/SOAP测试,web-services,wsdl,soapui,Web Services,Wsdl,Soapui,我已经用soapui测试了我的web服务(wsdl/soap)。我有错误: http/log:错误400错误请求 请问我的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/}definit

我已经用soapui测试了我的web服务(wsdl/soap)。我有错误: http/log:错误400错误请求

请问我的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)

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

编辑:

我对它进行了测试,看起来整个问题都出在您的web服务器上。您的web服务器将WSDL返回给浏览器,但不会返回给任何工具,因为这些工具使用的是非常简单的HTTP请求,没有许多HTTP头。缺少的标题之一是
Accept
。一旦请求中不包含此标头,服务器就会抛出HTTP 400错误请求


继续的简单方法是在浏览器中打开WSDL,将WSDL保存到一个文件,然后将该文件导入到soapUI,而不是从URL导入WSDL。

很可能是浏览器通过代理到达web服务,而soapUI未配置为使用该代理。例如,我在公司环境中工作,虽然我的IE和FireFox可以访问外部网站,但我的SoapUI只能访问内部web服务


简单的解决方案是在浏览器中打开WSDL,将其保存到.xml文件中,然后将您的SoapUI项目建立在该文件的基础上。但是,如果您的WSDL依赖于无法访问的外部XSD,那么这将不起作用。

另一种可能是您需要在SoapUI的服务url末尾添加?WSDL。
这一点让我明白了,因为我习惯了不需要它的WCFClient。

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

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


在代码中更改名称空间时,还要确保在web.config中更改名称空间

我在尝试测试部署到WSO2 ESB的web服务时遇到了相同的异常

WSO2同时生成wsdl和wsdl2。我试图传递wsdl2 URL,但得到了上述异常。快速谷歌搜索告诉我,wsdl1.1和wsdl2.0之间的区别之一是将“定义”元素替换为“描述”。还有,我发现了


因此,对我来说,解决方案是使用wsdl1url而不是wsdl2

对于将来遇到这个问题的人来说:这里的具体情况(“服务器没有正确地发送回WSDL”)可能相关,也可能不相关,但有两个关键方面应该始终相关:

  • 消息
    faultCode=INVALID_WSDL:Expected元素“{}definitions”
    表示返回的实际内容不是WSDL命名空间中基本元素为“definitions”的XML
  • 消息
    WSDLException(at/html)
    告诉您一条关于它找到了什么的重要线索——在本例中,
    /html
    强烈暗示返回了一个正常的网页,而不是WSDL。另一种常见情况是出现类似
    /soapenv:Reason
    ,这表明服务器试图将其视为SOAP调用—例如,如果您的URL用于“基本”服务URL而不是WSDL,则可能会发生这种情况

  • 请你能帮我吗??我花了5天时间来解决这个问题。我不明白你的回答,对不起。如何测试我的wsdl??日志错误是否表示我的web服务不工作??感谢您的回答您能将WSDL添加到soapUI项目吗?不,当我添加它时,它会向我显示“从url加载定义”,这需要几分钟的时间,它会向我显示“com.ev…:导入wsdl时出错。这是否意味着我的wsdl不工作?是的,这意味着无法下载wsdl或它不正确。您能在浏览器中打开WSDL吗?我使用IE/Firefox查看WSDL,并使用Visual studio/svcutil(用于创建服务代理的MS工具)模拟soapUI行为(我家中没有安装soapUI)。我使用Fiddler比较通过HTTP与服务器的通信,并测试不同的HTTP请求,直到我发现导致问题的差异。当您尝试在浏览器中打开wsdl时,它是什么样子的?当我在mozilla中打开它时,它向我展示了xml。你能用xml更新你的问题吗?当我在firefox中打开它时,我有这样一个问题:与此相关的任何样式信息似乎都不是xml。这实际上帮助我在CXF客户端上使用它。帮助mi使用SOAP UI。