【发布时间】:2014-05-28 13:55:25
【问题描述】:
对于一个项目,我需要使用 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):错误:远程方法名称冲突:struct/class 'SOAP_ENV__Fault' 已经在第 274 行声明
最后,当我尝试从我的代码中调用服务方法时(C++,不需要更改以前版本的任何内容,不需要 WS-A)程序冻结,我可以看到使用的内存增加到一个点( ~700MB),然后删除,程序保持冻结状态!
我使用的是 windows、VS2010 和 gSoap 2.8.17。
有人可以指出我如何添加 WSA 的正确方向吗?
提前谢谢你!
【问题讨论】:
标签: c++ wcf soap gsoap ws-addressing