当我尝试在通过 https

问题描述

我使用 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。

当我们点击 WSDL URL 时,它具有用户名/密码身份验证。

我该如何解决这个问题?

解决方法

错误信息中提到了可能的原因:

  1. 找不到文档;
  2. 无法读取文档;
  3. 文档的根元素不是 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>