Попытка использовать gSoap с WCF и WSHttpBinding

Я пытаюсь использовать библиотеку gSoap для связи с сервером WCF с помощью WSHttpBinding. Кажется, у меня проблема с плагином WS-Addressing для gSoap. Когда я включаю плагин WS-Addressing, используя #import "wsa5.h", я больше не могу компилировать. Теперь в soapC.cpp есть неразрешенные символы. Первая ошибка в soap_getelement(soap*, int*). Ошибка SOAP_TYPE_wsa5_IsReferenceParameter. Это моя первая попытка использования gSoap. Любой совет приветствуется.

gSoap версия 2.8.4

1 ответ

Что вы можете сделать, это добавить часть WSA в ваш файл Typemap, а затем в своей команде wsdl2h укажите ее с параметром -t.

то есть:

wsdl2h -o target.h -t EditedTypemap.dat target.wsdl

Вы можете просто скопировать стандартный Typemap.dat из вашего каталога gSOAP и отредактировать его так, чтобы он выглядел следующим образом:

wsa = <http://schemas.xmlsoap.org/ws/2004/08/addressing>

SOAP_ENV__Header =\
#import "wsa.h"\n\
struct SOAP_ENV__Header\n\
{\n\
   mustUnderstand _wsa__MessageID    wsa__MessageID 0;\n\
   mustUnderstand _wsa__RelatesTo *  wsa__RelatesTo 0;\n\
   mustUnderstand _wsa__From *       wsa__From      0;\n\
   mustUnderstand _wsa__ReplyTo *    wsa__ReplyTo   0;\n\
   mustUnderstand _wsa__FaultTo *    wsa__FaultTo   0;\n\
   mustUnderstand _wsa__To           wsa__To        0;\n\
   mustUnderstand _wsa__Action       wsa__Action    0;\n\
};

Затем снова запустите wsdl2h, как я упоминал выше. Надеюсь, что это работает для вас! gSOAP - это отличный инструментарий, к которому нужно привыкнуть.

Другие вопросы по тегам