我正在使用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添加到我的程序的主文件中:
#include "soapDeviceBindingProxy.h"
这给了我一个DeviceBindingProxy
对象,但我不知道如何处理它。我想以已知的IP地址连接到Onvif相机并请求有关该设备的信息。
GSOAP示例并不特定于Onvif,而Onvif伪代码示例并不特定于GSOAP。任何帮助将不胜感激。
答案 0 :(得分:1)
只需打开DeviceBindingProxy
对象的定义(甚至更好:在gSoap生成的源文件上运行 doxygen 并享受舒适的HTML文档)。
它应该为服务提供的每个操作包含一个单独的方法,完全按照服务定义命名。
每种方法都应该采用两个参数:request&响应(它们的类型是指向gSoap生成的结构的指针:有关详细信息,请参阅其定义/文档。)
您需要做的就是创建请求和实例的实例。响应,填充请求,将指针传递给此方法并从(已经解析的)响应中获取数据。