Onvif wsdl 的 wsimport - 无服务定义

问题描述 投票:0回答:2

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

我正在使用

wsimport
从 .wsdl 文件(Onvif 的 wsdl 文件)生成代码。跑步

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回答我添加了此服务声明,本地下载了

onvif.xsd
,并且
common.xsd
,修改了为这些Onvif文件指定的路径,然后生成了代码。

是否有更直接的方法在每个 Onvif URL 上运行

wsimport
命令?有超过 20 个 wsdl 文件,我发现手动下载,然后在每个文件中进行上述更改才能运行
wsimport

soap wsdl onvif
2个回答
3
投票

您应该在您的

WSDL
文件中进行以下更改:

  1. 在第 11 行添加

    name="DeviceService"
    ,以
    <wsdl:definitions...

  2. 开头
  3. 添加

    <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>

在文件末尾

</wsdl:binding>

之后

然后运行生成命令。


0
投票

请参阅此处:https://github.com/onvif/specs/discussions/90

引用:“我总是直接在 ONVIF WSDL 文件中定义服务,或者创建一个导入 ONVIF WSDL 并定义我需要生成的所有服务的父 WSDL 文件。我建议使用后者,因为当 ONVIF 将更新发布到WSDL 文件,您无需不断重新添加服务。”

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.