Mensagens SOAP com Anexos: Exemplos WSDL
Use esta tarefa para ver um exemplo e uma explicação de um arquivo WSDL com um anexo.
Exemplo
O exemplo do WSDL a seguir ilustra uma operação simples que possui um anexo chamado 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>
Nesse tipo de extensão do WSDL:
- Deve haver um atributo part (nesse exemplo attch) da mensagem de entrada para a operação (nesse exemplo MyOperation). Pode haver outras partes de entrada para MyOperation que não sejam anexos.
- Na entrada de ligação deve haver uma marcação <soap:body> ou uma marcação <mime:multipartRelated>, mas não ambas.
- Para mensagens MIME, a tag <soap:body> está dentro de uma tag <mime:part>. Deve haver apenas uma tag <mime:part> que contém uma tag <soap:body> na entrada de ligação e também não deve conter uma tag <mime:content>, porque o tipo de conteúdo de text/xml é assumido para a tag <soap:body>.
- Pode haver vários anexos em uma mensagem MIME, cada um descrito por uma tag <mime:part>.
- Cada tag <mime:part> que não contém uma tag <soap:body> contém uma tag <mime:content> que descreve o próprio anexo. O atributo type dentro da tag <mime:content> não é verificado ou utilizado pelo barramento de integração de serviço. Ele está lá para sugerir ao aplicativo que usa o barramento de integração de serviços o conteúdo do anexo. Várias tags <mime:content> dentro de uma única tag <mime:part> significa que o serviço de backend espera um único anexo com um tipo especificado por uma das tags <mime:content> dentro dessa tag <mime:part>.
- O atributo parts="..." O atributo dentro da tag <soap:body> é assumido como contendo os nomes de todas as partes SOAP na mensagem, mas não as partes do anexo. Se houver apenas partes de anexo, especifique parts="" (cadeia vazia). Se você omitir o atributo parts junto, o barramento de integração de serviços assumirá TODAS as partes incluindo os anexos - que fazem com que os anexos apareçam duas vezes.
No WSDL, você pode ter definido um esquema para o anexo (por exemplo, como um binary[]). As tecnologias de integração de serviço ignoram silenciosamente este mapeamento e tratam o anexo como uma Rotina de Tratamento de Dados.
Não é necessário mencionar anexos não referidos nas ligações de WSDL.