Проблема с префиксом пространства имен gSOAP

Я заметил, что несколько человек задавали этот вопрос, но я не смог найти удовлетворительного ответа. Я использую 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.


person toc777    schedule 15.03.2011    source источник


Ответы (1)


Какую версию gSOAP вы используете? Если это 2.8.1 или выше, вы можете попробовать использовать это:

soap_omode(&мыло, SOAP_XML_DEFAULTNS);

Я нашел его на http://cateof.wordpress.com/2010/09/21/default-namespace-gsoap-with/

person Sander    schedule 17.03.2011
comment
Огромное спасибо, это было именно то, что мне нужно было найти. - person toc777; 18.03.2011