我有一个使用axis2(Java)公开的soap Web服务,它将POJO序列化,例如具有名称的Person等,作为动作响应。此外,我有一个动作,它使用了一个序列化的 DataHandler,以便将二进制附件放入响应中,使用<xop:Include ...></xop:Include>
我已经使用 wso2 wsfcpp 提供的 wsdl2cpp 在 c++ 中生成了客户端代码。getPerson(personId) 操作工作正常,结果符合预期。但是,尽管生成的代码似乎无法正常工作,但 getFile(someId) 操作是成功的。
在axis2.xml 以及客户端中设置为enableMTOM=true 的服务。我什至添加了 Options.setEnableMTOM(true) 以确保在客户端的主要部分。
我认为问题在于从 wsdl 生成的代码,因为 getFile(someId) 响应的信封是有效的(我已经使用axis2c api手动测试了它,我可以按预期检索文件)。
以下是响应的 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>
这是用于生成客户端代码的命令行:
WSDL2CPP -uri MyService.xml -g -d adb -u -f
这是从服务收到的响应:
<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 中是否缺少某些内容,或者该功能(带有 MTOM 客户端代码生成的肥皂)是否由 wsfcpp 实现?
提前致谢!