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

mpbci0fu  于 2022-11-15  发布在  其他
关注(0)|答案(9)|浏览(283)

我已经用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)
nxowjjhe

nxowjjhe1#

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

最重要的是!!!

在代码中更改命名空间时,也要确保在web.config中进行更改!

ars1skjm

ars1skjm2#

我在尝试测试部署到WSO2ESB的Web服务时遇到了同样的异常。
WSO2生成了wsdl和wsdl2。我试图传递一个wsdl2 URL,但遇到了上述异常。快速搜索显示,wsdl1.1和wsdl2.0之间的区别之一是用“description”替换“definitions”元素。另外,我发现,SoapUI does not support wsdl2 .
因此,对我来说,解决方案是使用wsdl1url而不是wsdl2。

oprakyz7

oprakyz73#

一种可能的情况是,您的浏览器通过代理访问您的Web服务,而SoapUI未配置为使用该代理。例如,我在公司环境中工作,虽然我的IE和FireFox可以访问外部网站,但我的SoapUI只能访问内部Web服务。
简单的解决方案是在浏览器中打开WSDL,将其保存为.xml文件,然后将SoapUI项目基于该文件。但是,如果WSDL依赖于它无法访问的外部XSD,则此方法将不起作用。

j8yoct9x

j8yoct9x4#

对于将来遇到此问题的任何人:这里的特定情况(“服务器没有正确地发回WSDL”)可能总是相关的,也可能不总是相关的,但是两个关键方面应该总是相关的:
1.消息faultCode=INVALID_WSDL: Expected element '{ [http://schemas.xmlsoap.org/wsdl/](http://schemas.xmlsoap.org/wsdl/) }definitions'表示返回的实际内容不是WSDL命名空间中具有基本元素“definitions”的XML。
1.消息WSDLException (at /html)告诉您一个关于它 did 发现了什么的重要线索-对于这个例子,/html强烈暗示返回了一个正常的网页,而不是WSDL。另一种常见的情况是看到类似/soapenv:Reason的消息,这表明服务器试图将其视为SOAP调用-例如,如果您的URL用于“基本”服务URL而不是WSDL,则可能会发生这种情况。

8ehkhllq

8ehkhllq5#

我也遇到了同样的问题,(对我来说)解决办法是:

  • 打开SoapUI首选项
  • 单击SSL设置
  • 清除“密钥库”和“密钥库密码”文本框
  • 取消选中底部的“客户端认证”复选框,需要客户端认证。
h5qlskok

h5qlskok6#

在以.svc结尾的AspNet服务上,您必须将URL终止为“?wsdl”。否则,SoapUI将尝试读取服务的主页HTML(* 这不是WSDL,对吗?)*
例如:

zazmityj

zazmityj7#

definitions是WSDL的根元素,因此看起来您没有加载WSDL。
编辑:
我测试了它,看起来整个问题都出在你的Web服务器上。你的Web服务器将WSDL返回给浏览器,但它不将它返回给任何工具,因为这些工具使用的是非常简单的HTTP请求,没有很多HTTP头。其中一个缺失的头是Accept。一旦请求中不包含这个头,你的服务器就会抛出HTTP 400 Bad request。
继续操作的简单方法是在浏览器中打开WSDL,将wsdl保存到一个文件,然后将该文件导入soapUI,而不是从URL导入WSDL。

chy5wohz

chy5wohz8#

另一种可能性是,您需要在SoapUI的服务URL的末尾添加?wsdl。这一点让我很感兴趣,因为我已经习惯了不需要它的WCFClient。

m0rkklqb

m0rkklqb9#

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

相关问题