gsoap 复杂类型 序列化 问题(元芳, 你怎么看)
相关wsdl协议如下
<wsdl:operation name="FUNC"> <wsdl:input ws:Action="http://tempuri.org/XXXService/FUNC" message="tns:XXXService_FUNC_Input"/> <wsdl:output ws:Action="http://tempuri.org/XXXService/FUNCResponse" message="tns:XXXService_FUNC_Output"/> </wsdl:operation> <wsdl:message name="XXXService_FUNC_Input"> <wsdl:part name="parameters" element="tns:FUNC"/> </wsdl:message> <xs:element name="FUNC"> <xs:complexType> <xs:sequence/> </xs:complexType> </xs:element>
根据协议,对于入参gsoap自动生成下面类
class _ns1__FUNC { public: /// A handle to the soap struct that manages this instance (automatically set) struct soap *soap ; };
程序部分代码
int main( XXXService websoap; _ns1__FUNC ns1__FUNC;//入参 _ns1__FUNCResponse ns1__FUNCResponse;//出参 int ret = websoap.__ns1__FUNC(&ns1__FUNC, &ns1__FUNCResponse); cout<<"返回值为"<<ret<<endl; return 0; )
协议需要入参应该是一段xml代码
"<?xml version="1.0" encoding="utf-16"?>" "<Condition>" "<ID>000</ID>" "</Condition>";
请问我如何把这段xml写到入参里面,
现在发送给服务端的数据都是空的。
<SOAP-ENV:Body><ns1:FUNC></ns1:FUNC></SOAP-ENV:Body></SOAP-ENV:Envelope>
我试过重新定义
class _ns1__FUNC { public: std::string xml; /// A handle to the soap struct that manages this instance (automatically set) struct soap *soap ; }; ns1__FUNC.xml= "<?xml version="1.0" encoding="utf-16"?>" "<Condition>" "<ID>000</ID>" "</Condition>";
可是发送过去的数据还是空的,没有序列化上
初次使用gsoap,对wsdl也是不太熟悉,问题可能描述不太清楚
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(6)
此问题已解决
原因是
还不如抛弃gsoap,直接包装soap对象后post过去,将返回的字符串写个parser解析。
有谁遇到过 输入参数为空结构体的?
谁能告诉我wsdl这样定义符合规范吗?一个复杂类型FUC里面什么都没有
真的不想放弃,真想把这个问题解决,真的不想换java
真的是对c++无语了,调个webservice这么多问题
别沉