У меня есть пара файлов WSDL, и я использовал gSOAP для создания кода C++.
Для генерации Кода использовались следующие команды:
\path\to\wsdl2h -I \path\to\import\dir -j -N Service1Prefix -n Namespace1Prefix -o \path\to\output\header\dir\header1.h -q CPPNamespace1 -t \path\to\typemap.dat .\path\to\wsdl1.wsdl
И так далее для оставшихся файлов WSDL. В документации gsoap я прочитал, что потребуется пустой файл env.h, который будет обрабатывать сериализацию и обработку ошибок. Поэтому я создал для этого пустой файл.
После этого я сгенерировал код C++ для каждого файла WSDL с помощью инструмента soap2cpp:
\path\to\soap2cpp -1 -C -L -a -A -b -d \path\to\output\dir -i -j -I \path\to\import\dir -n -r -w -x \path\to\header\dir\header1.h
И env.h
\path\to\soap2cpp -1 -C -L -b -d \path\to\output\dir -j -I \path\to\import\dir -penv -r -w -x \path\to\env.h
Все заработало, и я получил код C++.
Я поместил его в свой код и попробовал метод, но выдал ошибку.
Ошибка: WSWS3147E: Ошибка: нет заголовка SOAPAction!
Я попытался немного повозиться с параметрами wsdl2h и soap2cpp, но не пришел к удовлетворительному результату. Когда я удаляю параметр для префиксов, заголовок SOAPAction был установлен, но у меня возникают проблемы, когда ответ содержит несколько объектов с одинаковым именем, но разным содержимым.
Некоторые поиски не привели к рабочему решению для меня. Сталкивался ли кто-нибудь из вас с этой проблемой раньше и мог бы предложить помощь?