对于一个项目,我需要使用 WCF 服务(不是我创建的)。
我已经使用 gSoap 工具包创建了适当的类,一切都运行良好!
直到服务的开发者决定更新它并需要 WS-Addressing!
我已经使用soapUI 工具测试了该服务,为了获得响应,我需要检查WS-A 下的“添加默认wsa:To”选项。
我假设我需要在我的代码中做类似的事情。我阅读了有关使用 wsa 插件的信息,但找不到足够的说明。到目前为止我所做的是:
我用了wsdl2h -o outfile.h url_to_service -t typemap.dat
在 typemap.dat 中我输入:
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\
};
使用 soapcpp2 工具时,我收到一条错误消息:
wsa5.h(288):错误:远程方法名称冲突:结构/类 'SOAP_ENV__Fault' 已在第 274 行声明
最后,当我尝试从我的代码中调用服务方法时(C++,不需要更改之前版本的任何内容,不需要 WS-A)程序冻结,我可以看到使用的内存增加到一个点(~700MB) ,然后放下,程序保持冻结状态!
我正在使用 Windows、VS2010 和 gSoap 2.8.17。
有人可以指出我如何添加 WSA 的正确方向吗?
先感谢您!