【问题标题】:wsimport for Onvif wsdl - no service definitionOnvif wsdl 的 wsimport - 无服务定义
【发布时间】:2018-04-21 20:12:16
【问题描述】:

有几个类似的问题,但没有一个明确回答这个问题。

我正在使用wsimport 从 .wsdl 文件 (Onvif's wsdl files) 生成代码。运行

wsimport -keep https://www.onvif.org/ver10/device/wsdl/devicemgmt.wsdl -extension -Xnocompile

输出

At least one WSDL with at least one service definition needs to be provided.

基于this SO answer我添加了这个服务声明,本地下载了onvif.xsdcommon.xsd,修改了这些Onvif文件指定的路径,然后生成了代码。

有没有更直接的方法在每个 Onvif URL 上运行 wsimport 命令? wsdl文件有20多个,我觉得手动下载很傻,然后在每个文件中进行上述更改即可运行wsimport

【问题讨论】:

    标签: soap wsdl onvif


    【解决方案1】:

    您应该在 WSDL 文件中进行这些更改:

    1. 在以<wsdl:definitions...开头的第11行添加name="DeviceService"

    2. 添加

      <wsdl:service name="DeviceService"> <wsdl:port name="DevicePort" binding="tds:DeviceBinding"> <soap:address location="http://www.onvif.org/ver10/device/wsdl/devicemgmt.wsdl"/> </wsdl:port> </wsdl:service>

    &lt;/wsdl:binding&gt;之后的文件末尾

    然后运行生成命令。

    【讨论】:

    • 我明白这是要做的。我想避免对所有 Onvif wsdl 文件进行这些更改 - 我的问题特别是如何避免将这些行添加到所有 wsdl 文件中。
    • 我认为没有其他选择,这些错误来自WSDL 已上传到ONVIF 网站的文件。这可能是公司的伎俩!我尝试了大约 2 个多星期来找出这些错误。
    • 这太可惜了。作为一个开放标准,他们没有任何开源完整使用示例,这很烦人。他们提供的只是应用程序程序员指南,仅此而已;这几乎无法使用。我花了 2 多天才登录到工作。
    • 这也适用于我。谢谢。为了使替换过程自动化,我使用“sed”和“grep”命令开发了一个 linux shell 脚本。
    猜你喜欢
    • 2017-09-02
    • 1970-01-01
    • 2014-03-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多