我目前在工作中遇到了从 wsdl 文件生成 SOAP api 客户端代码的问题。该文件可供公众访问此处。我特别希望使用的名为 GetListingInteraction_1.0_rivtabp20.wsdl。我知道它依赖于其他三个 xsd 文件 crm_carelisting_1_0.xsd、GetListing_1_0.xsd 和 ws-addressing-1.0.xsd。
我正在使用包 com.yupzip.wsdl2java
我们将 kotlin 与 java 11 一起使用。
这是 wsdl2java 的 gradle.build 配置文件的样子:
plugins {
id 'com.yupzip.wsdl2java' version "$wsdl2java_version"
}
wsdl2java {
wsdlsToGenerate = [
[
'-p', 'generated.com.test.microservice.test.resources.models.listing.getlistinginteraction',
'-wsdlLocation', 'classpath:wsdl/GetListingInteraction_1.0_rivtabp20.wsdl', "$projectDir/src/main/resources/wsdl/GetListingInteraction_1.0_rivtabp20.wsdl"
],
]
wsdlDir = file("$projectDir/src/main/resources/wsdl")
cxfVersion = "3.5.5"
cxfPluginVersion = "3.5.5"
}
我们收到的错误。
无法为方法 [getListing] 中的 [逻辑地址] 部分创建 java 参数 - 此 wsdl 无效,请使用 wsdlvalidator 工具验证此 wsdl
我已经检查了 wsdl 文件、验证、格式化等,但对我来说一切看起来都不错。总的来说,我对 SOAP 和 WSDL 不太有经验,而且有点不知道该做什么。我们还有另一项服务,能够在系统的另一部分为另一个 SOAP API 生成具有完全相同设置的客户端代码。使用相同版本的 wsdl2java 依赖项和配置,只是wsdlsToGenerate中的其他 wsdl 文件。
有人愿意尝试自己复制一下,看看你是否遇到同样的问题吗?如果您找到解决方案,我将非常感激。
如果您需要更多信息,请告诉我。
我在这里的一个小项目中复制了它https://github.com/Menyten/wsdltest
我解决了这个问题。显然我需要一些额外的论据才能让这一代人发挥作用。我查看了原始项目的 pom.xml 文件,并在 wsdlOptions 下看到了相关文件的额外参数