为什么SoapUI在获取WSDL时要进行第二次调用以获取XSD?

为什么SoapUI在获取WSDL时要进行第二次调用以获取XSD?,soap,xsd,wsdl,soapui,soapcore,Soap,Xsd,Wsdl,Soapui,Soapcore,我试图获取一组现有的WSDL和XSD文件,并使用SoapCore NuGet包在我的.Net核心应用程序中创建一个SOAPAPI端点 通过将SoapCore配置为,我可以按预期返回WSDL,但是,当我使用SoapUI基于我的WSDL创建新的SOAP项目时,它会执行两个请求。第一个获取了WSDL,这是我所期望的,并且成功了。但随后它在同一端点上执行另一个请求,但包含querystring参数?xsd&name=。这会导致SoapCore失败,因为请求请求XSD,但没有给出文件名 我不知道问题是So

我试图获取一组现有的WSDL和XSD文件,并使用SoapCore NuGet包在我的.Net核心应用程序中创建一个SOAPAPI端点

通过将SoapCore配置为,我可以按预期返回WSDL,但是,当我使用SoapUI基于我的WSDL创建新的SOAP项目时,它会执行两个请求。第一个获取了WSDL,这是我所期望的,并且成功了。但随后它在同一端点上执行另一个请求,但包含querystring参数
?xsd&name=
。这会导致SoapCore失败,因为请求请求XSD,但没有给出文件名

我不知道问题是SoapUI、SoapCore还是我的代码。SoapUI为什么提出这个请求?这正常吗?Soap API端点必须同时具有WSDL和XSD才能工作吗?我将我拥有的XSD放在与WSDL相同的文件夹中,并将SoapCore指向它们,如上面的链接所示,但问题仍然存在

我通常不使用SOAP,所以希望这个问题有意义

更新: 博格丹问了一个关于进口的有趣问题。XSD确实有引用其他文件的导入。但是,WSDL在WSDL:types元素中嵌入了XSD。在这个标记中还有导入标记,但它们没有
schemaLocation
属性。以下是一个例子:

<xs:import xmlns:xs="http://www.w3.org/2001/XMLSchema"
            namespace="http://www.starstandards.org/STAR" />


这可能是SoapUI使用空白文件名进行调用的原因吗?此标记的格式是否错误或有效?如果未包含
schemaLocation
属性,则
的默认路径/文件名是什么?

您的WSDL很可能导入XML架构,而架构的位置是SoapUI无法解析的

我不熟悉SoapCore,不知道它是如何解析XSD导入的,但对于WSDLs,一般来说,导入是:

  • 在与SOAP web服务相同的端点上,然后使用一些URL参数访问xsd,如SoapUI正在尝试执行的操作,如
    ?xsd&name=identifierForSchemaHere
    。这类似于使用
    ?WSDL
    访问WSDL的方式
  • 或者位置是可以获取XSD文件的绝对URL路径
现在回答这个问题:

Soap API端点必须同时具有WSDL和XSD才能工作吗

理论上,两者都不需要

WSDL类似于机器可读的文档。您可以使用工具指向WSDL,这些工具可以生成允许您调用服务的代码,或者可以为您创建处理SOAP详细信息的服务器存根。但是,如果您构建了一个有效的soapweb服务,那么如果您知道如何格式化soapxml消息,那么您可以在不使用WSDL的情况下调用它,方法是使用开发人员需要阅读的普通文档来理解如何与web服务交互

您不需要WSDL,但是大多数soapweb服务都应该提供一个WSDL,以帮助必须与web服务交互的客户机。提供WSDL时,还需要提供XSD模式(或WSDL的
部分)。没有XSD的WSDL有一半的用处,因为它缺少让客户端知道如何在SOAP消息中构建XML元素的部分

进一步阅读:

  • (文章中解释的概念与PHP无关,尽管问题是)

好的,这很有帮助。但奇怪的是WSDL中没有导入。XSD嵌入在
元素中。所以我不确定为什么SoapUI觉得有必要执行第二个请求。也许是个虫子。我问了他们这个问题。我不认为这是SoapCore的错,因为他们只是对缺少文件名的url做出反应。现在,我想我将试着通过邮递员发布XML,看看是否可以让它工作。谢谢。有什么进口货吗?也许在XSD里?WSDL可以从其他地方导入内容,XSD也可以从其他地方导入内容。请看我更新的问题。我以前从未使用过没有schemaLocation的导入,但显然XML模式允许:当没有schemaLocation[属性]时,模式作者将该模式的标识留给实例、应用程序或用户,通过下面第3层中描述的机制:模式文档访问和Web互操作性(§4.3)。是否可能缺少一些XSD?您是否可以删除这些导入或向其添加一些schemaLocation,以查看SoapUI错误消息是否以某种方式发生更改?