Попытка использовать 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 - это отличный инструментарий, к которому нужно привыкнуть.