带有附件的 SOAP 消息:WSDL 示例
使用此任务查看带有附件的 WSDL 文件的示例和说明。
示例
以下示例 WSDL 演示了一个简单操作,该操作具有一个名为 attch 的附件:
<binding name="MyBinding" type="tns:abc" >
<soap:binding style="rpc" transport="http://schemas.xmlsoap.org/soap/http"/>
<operation name="MyOperation">
<soap:operation soapAction=""/>
<input>
<mime:multipartRelated>
<mime:part>
<soap:body parts="part1 part2 ..." use="encoded" namespace="http://mynamespace"
encodingStyle="http://schemas.xmlsoap.org/soap/encoding"/>
</mime:part>
<mime:part>
<mime:content part="attch" type="text/html"/>
</mime:part>
</mime:multipartRelated>
</input>
</operation>
</binding>
在此类 WSDL 扩展中:
- 操作(在本示例中,操作是 MyOperation)的输入消息必须具有 part 属性(在本示例中,该属性为 attch)。MyOperation 还可以具有其他不是附件的输入部件。
- 在绑定输入中,必须要有 <soap:body> 标记或 <mime:multipartRelated> 标记,但不能同时有这两个标记。
- 对于 MIME 消息,<soap:body> 标记位于 <mime:part> 标记内。在绑定输入中,必须只有一个 <mime:part> 标记包含 <soap:body> 标记,并且该标记一定不能同时包含 <mime:content> 标记,这是因为,对于 <soap:body> 标记,假定内容类型为 text/xml。
- 在 MIME 消息中可以有多个附件,每个附件都由 <mime:part> 标记描述。
- 每个未包含 <soap:body> 标记的 <mime:part> 标记都包含用来描述附件本身的 <mime:content> 标记。服务集成总线既不检查也不使用 <mime:content> 标记中的 type 属性。建议应用程序使用附件包含的服务集成总线。在一个 <mime:part> 标记中有多个 <mime:content> 标记表示后端服务需要一个附件,该附件的类型由该 <mime:part> 标记中的其中一个 <mime:content> 标记指定。
- 假定 <soap:body> 标记中的 parts="..." 属性包含消息中所有 SOAP 部件(附件部件除外)的名称。如果只有附件部件,那么指定 parts=""(空字符串)。如果完全省略 parts 属性,那么服务集成总线假定所有部件都包括附件 - 这将导致附件出现两次。
在 WSDL 中,您可能已经为附件定义了模式(例如,定义为 binary[])。服务集成技术以静默方式忽略此映射并将该附件视为数据处理程序。
不需要在 WSDL 绑定中涉及被取消引用的附件。