使用gsoap,我为soap服务器创建了一个客户端。
在我创建源代码的wsdl中,有一个类型为wsnt中定义的NotificationMessage类型的元素。
有没有办法将其转换为自定义对象?
我需要以下内容:
/* get response */
_wsnt__NotificationMessageHolderType_Message message = response.Message;
if (message is _tt__Message)
{
_tt__Message m = message as _tt__Message;
/* do something with m */
} else if (message is std::string) {
std::string str = message as std::string;
/* do something with str */
} else {
Warning("Unrecognized type");
}
任何帮助将不胜感激!
答案 0 :(得分:0)
也许使用wsdl2h选项-d?这会生成添加DOM支持的代码(不要同时使用选项-x)。
DOM节点图xsd__anyType
包含Message
的内容。 DOM内容可以设置和读取,也可以包含可序列化的数据,如XML DOM and XPath中针对gSOAP所述。
要在XML DOM中启用C / C ++的序列化,请使用SOAP_DOM_NODE
。 XML元素标记名称应与C / C ++类型的名称匹配,以将其自动反序列化为C / C ++对象。
因为_wsnt__NotificationMessageHolderType_Message
类是嵌入式的,所以你不能像typemap.dat
那样给出全局定义的类的重写定义(至少不是gSOAP高达2.8.28)。