Проблема с префиксом пространства имен gSOAP - PullRequest
2 голосов
/ 15 марта 2011

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

1 Ответ

3 голосов
/ 17 марта 2011

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

soap_omode (& soap, SOAP_XML_DEFAULTNS);

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

...