4

我正在使用 Visual Studio 和 GSOAP 2.8.15 创建 C++ Onvif 客户端。

我已经运行这些命令来创建源代码:

> wsdl2h -P -x -o onvif.h http://www.onvif.org/onvif/ver10/device/wsdl/devicemgmt.wsdl

> soapcpp2 -i -C -IC:\gsoap-2.8.15\gsoap;C:\gsoap-2.8.15\gsoap\import onvif.h

然后我将这些文件放入我的 MSVC 解决方案中:

duration.h/.cpp
soapH.h/soapC.cpp
stdsoap2.h/.cpp

我将此文件添加到目录但未添加到解决方案中:

soapStub.h

我将其添加#define到编译中:

WITH_NONAMESPACES

我将此包含添加到我的程序的主文件中:

#include "soapDeviceBindingProxy.h"

这给了我一个DeviceBindingProxy对象,但我不知道如何处理它。我想连接到已知 IP 地址的 Onvif 摄像头并请求有关设备的信息。

GSOAP 示例并不特定于 Onvif,Onvif 伪代码示例也不特定于 GSOAP。任何帮助,将不胜感激。

4

1 回答 1

1

只需打开DeviceBindingProxy对象的定义(或者更好:在 gSoap 生成的源文件上运行doxygen并享受舒适的 HTML 文档)。

它应该为服务提供的每个操作包含一个单独的方法,完全按照服务定义命名。

每个方法都应该采用两个参数:请求和响应(它们的类型是指向 gSoap 生成的结构的指针:有关详细信息,请参阅它们的定义/文档)。

您需要做的就是创建请求和响应的实例,填充请求,将指向这两个方法的指针传递给该方法并从(已经解析的)响应中收集数据。

于 2013-07-17T13:08:50.907 回答