问题描述
我使用 Apache Geronimo Server 进行开发。我需要从通过 https 公开的 WSDL 生成代码。我使用了以下命令:
wsimport -keep -verbose https://devurl:7443/process-engine/soap/CustomerByNumber_v1?wsdl
但我收到此错误:
解析 WSDL...
[ERROR] 收到致命警报:protocol_version
未能读取WSDL文档:https://devurl:7443/process-engine/soap/CustomerByNumber_v1?wsdl,因为1)找不到文档; /2) 无法读取文档; 3)文档的根元素不是wsdl:deFinitions。
[ERROR] Failed.noservice=在提供的 WSDL 中找不到 wsdl:service:
未能解析 WSDL。
当我们点击 WSDL URL 时,它具有用户名/密码身份验证。
我该如何解决这个问题?
解决方法
错误信息中提到了可能的原因:
- 找不到文档;
- 无法读取文档;
- 文档的根元素不是
d = datetime(43606.4791492245,'ConvertFrom','posixtime') d = datetime 01-Jan-1970 12:06:46
。
您提到该服务需要用户名/密码身份验证。访问 WSDL 也是这种情况吗?因此,协议可能不一定是问题所在。
执行以下操作:
- 在浏览器中打开 WSDL URL。您的浏览器不会出现 HTTPS 问题。
- 如果需要访问 WSDL,请提供用户名/密码。
- 确保打开的文档是 WSDL 并包含
<wsdl:definitions>
根元素。 - 使用 .wsdl 扩展名将 WSDL 下载到您的计算机。
- 对这个文件使用 wsimport:
<wsdl:definitions>