Я заметил, что несколько человек задавали этот вопрос, но я не смог найти удовлетворительного ответа. Я использую gSOAP для создания заглушек С++ из документа wsdl. Проблема заключается в том, что gSOAP добавляет префикс пространства имен к именам методов мыла при отправке сообщения мыла. Например, он отправляет <ns2:Inform></ns2:Inform>
, когда нужно отправить <Inform></Inform>
.
Кто-нибудь знает, как решить эту проблему?
EDIT:
Выбранный ниже ответ сначала не работал у меня, потому что я использую прокси-версию C++, но все, что мне нужно было сделать, это создать свой служебный объект, используя следующий код,
exampleSOAPProxy service=exampleSOAPProxy(SOAP_XML_DEFAULTNS,SOAP_XML_DEFAULTNS);
SOAP_XML_DEFAULTNS — сбивающее с толку имя, потому что оно фактически не использует пространство имен по умолчанию для всего, а просто удаляет префиксы пространства имен из элементов и явно добавляет пространство имен к каждому элементу.
При компиляции моего приложения мне нужно было добавить -DWITH_SOAPDEFS_H в мой оператор компиляции/связывания. Примечание. Мне нужно было создать файл с именем soapdefs.h в /usr/local/include/, потому что он импортируется, когда вы устанавливаете флаг -DWITH_SOAPDEFS_H. Это просто заголовочный файл, который вы используете для добавления включений и объявлений в stdsoap2.h.