Soap 使用带有MTOM附件的wsdl2cpp客户端生成wso2 cpp代码
我有一个用axis2(Java)公开的soap web服务,它将POJO(例如有名字的人等)序列化为动作响应。此外,我还有一个操作,它使用一个序列化的DataHandler,以便使用Soap 使用带有MTOM附件的wsdl2cpp客户端生成wso2 cpp代码,soap,attachment,wso2,mtom,Soap,Attachment,Wso2,Mtom,我有一个用axis2(Java)公开的soap web服务,它将POJO(例如有名字的人等)序列化为动作响应。此外,我还有一个操作,它使用一个序列化的DataHandler,以便使用 < >我使用WSO2WSFCP提供的WSDL2CPP生成C++客户端代码。getPerson(personId)操作运行良好,结果与预期一致。然而,getFile(someId)操作是成功的,尽管生成的代码似乎不能正常工作 axis2.xml中设置的服务as enableMTOM=true以及客户端。我甚至在客户端
< >我使用WSO2WSFCP提供的WSDL2CPP生成C++客户端代码。getPerson(personId)操作运行良好,结果与预期一致。然而,getFile(someId)操作是成功的,尽管生成的代码似乎不能正常工作
axis2.xml中设置的服务as enableMTOM=true以及客户端。我甚至在客户端添加了Options.setEnableMTOM(true)以确保基本上是正确的
我认为问题在于从wsdl生成的代码,因为getFile(someId)响应的信封是有效的(我已经用Axis2CAPI手动测试了它,我可以按预期检索文件)
以下是响应的wsdl(由axis2 Java生成)中包含的模式:
<xs:element name="getFileResponse">
<xs:complexType>
<xs:sequence>
<xs:element minOccurs="0" name="return" nillable="true" type="xs:base64Binary"/>
</xs:sequence>
</xs:complexType>
</xs:element>
以下是从服务收到的响应:
<ns:getFileResponse xmlns:ns="http://services.myplace.com">
<ns:return>
<xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" href="cid:1.3ad8fc0571509f196559ee5312c14d23250854e4c9c8383e@apache.org"></xop:Include>
</ns:return>
</ns:getFileResponse>
wsdl中是否缺少某些内容,或者wsfcpp是否未实现该功能(生成MTOM客户端代码的soap)
提前谢谢 我用gSoap做了同样的尝试,我也遇到了同样的问题。我认为axis2会自动检测二进制文件是否经过优化。此外,我发现在这两种情况下,wsdl公开的返回元素类型都是type=“xs:base64Binary” 我发现的唯一解决方法是使用python(或其他)脚本修补WSDL,用xop:Include替换xs:base64Binary,然后生成代码 这解决了问题,但也带来了可维护性问题
<ns:getFileResponse xmlns:ns="http://services.myplace.com">
<ns:return>
<xop:Include xmlns:xop="http://www.w3.org/2004/08/xop/include" href="cid:1.3ad8fc0571509f196559ee5312c14d23250854e4c9c8383e@apache.org"></xop:Include>
</ns:return>
</ns:getFileResponse>