我有一个用轴2( Java) 曝光的肥皂网络服务, 它将 POJO 序列成序列, 例如个人名称等, 作为动作响应 。 此外, 我有一个动作, 使用数据显示器进行序列化, 以便使用 < code\\ lt; xop: include... > </ xop: Include> code> 在响应中插入一个二进制附件 。
我用 wso2 wsfcpp 提供的 wsdl2cpp 生成了 c++ 中的客户端代码 。 GetPerson( person( personId)) 动作效果良好, 结果也和预期一样。 然而, 获取File( someId) 动作是成功的, 尽管生成的代码似乎不起作用 。
在轴 2. xml 和客户端中设置的启用MTOM= true的服务。 我甚至添加了“ 选项” 。 setEnableMTOM( true) 以在客户端的主端确定 。
我认为问题在于来自 wsdl 的代码, 因为获取File( someId) 回应信封是有效的( 我用轴2c api 手动测试过, 我可以如期检索文件) 。
以下是Wsdl(由轴2 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:[email protected]"></xop:Include>
</ns:return>
</ns:getFileResponse>
Wsdl 中是否遗漏了什么东西? 还是Wsfcpp没有执行该特性( MTOM 客户端代码生成的肥皂)?
提前感谢!