forvif wsdl的wsimport - 没有服务定义

时间:2018-04-20 09:02:47

标签: soap wsdl onvif

沿着类似的路线有几个问题,但没有一个明确地回答这个问题。

我使用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网址上运行wsimport命令?有超过20个wsdl文件,我觉得手动下载很傻,然后在每个文件中进行上述更改才能运行wsimport

1 个答案:

答案 0 :(得分:2)

您应该在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>

  4. </wsdl:binding>

    之后的文件末尾

    然后运行生成命令。