Я использую 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
объект, но я не знаю, что с ним делать. Я хочу подключиться к камере Onvif по известному IP-адресу и запросить информацию об устройстве.
Примеры GSOAP не являются специфичными для Onvif, а примеры псевдокода Onvif не являются специфическими для GSOAP. Любая помощь будет оценена.
Просто откройте определение DeviceBindingProxy
объект (или даже лучше: запустить Doxygen на исходные файлы, сгенерированные gSoap и наслаждайтесь удобной документацией HTML).
Он должен содержать отдельный метод для каждого действия, предоставляемого службой, названный точно в соответствии с определением службы.
Каждый из методов должен принимать два параметра: запрос & ответ (их типы являются указателями на структуры, сгенерированные gSoap: подробности см. в их определении / документации).
Все, что вам нужно сделать, это создать экземпляры запроса & ответ, заполните запрос, передайте указатели на этот метод и соберите данные из (уже проанализированного) ответа.
Других решений пока нет …