3. Estrutura Básica
Nessa seção será definida a estrutura de uma mensagem SOAP.
Exemplo
O exemplo a seguir consiste de duas mensagens SOAP: uma chamada de procedimento - pedido -  e uma resposta. É um exemplo simples que chama um procedimento fictício chamado retornaNome que, por sua vez, recebe como único argumento o número do DRE de um aluno (numdre) e retorna o nome do aluno identificado pelo DRE fornecido.
Pedido (Request):
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap- envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding" xmlns:tiposns="http://www.w3.org/2001/XMLSchema">
       <soap:Body>
             <m:retornaNome xmlns:m="http://www.dre.ufrj.br/ws/dre">
                    <numdre type="tiposns:int">106017797</drenum>
             </m:retornaNome>
       </soap:Body>
</soap:Envelope>
-----------------------------------------------------------------------------------------------------------------------------------------------
Resposta (Response):
<?xml version="1.0"?>
<soap:Envelope xmlns:soap="http://www.w3.org/2001/12/soap- envelope" soap:encodingStyle="http://www.w3.org/2001/12/soap-encoding" xmlns:tiposns="http://www.w3.org/2001/XMLSchema">
       <soap:Body>
             <m:retornaNomeResponse xmlns:m="http://www.dre.ufrj.br/ws/dre">
                    <nome type="tiposns:string">Leonardo Bentes Armt</nome>
             </m:retornaNomeResponse>
       </soap:Body>
</soap:Envelope>
Cabeçalho XML
Por ser um documento XML, uma mensagem SOAP deve possuir o cabeçalho identificando-a como tal (<?xml version="1.0"?>).
Envelope
Como todo documento XML, uma mensagem SOAP é composta de tags (elementos). No caso específico em estudo, há uma restrição sobre as tags de primeiro nível (tags-raiz ou elementos- raiz): uma mensagem SOAP possui apenas um elemento-raiz, chamado Envelope.
Um atributo importante, ainda que opcional, desse elemento é o encodingStyle. Ele pode ser usado em qualquer elemento de uma mensagem SOAP. O valor desse atributo é a localização do documento XML que define os tipos de dados (string, int, dateTime etc) do elemento ao qual ele pertence e dos seus elementos-filho. A W3C mantém um documento padrão para ser usado no atributo encodignStyle: "http://www.w3.org/2001/12/soap-encoding". Esse padrão define os seguintes tipos:
Nome                           Tipo                             Exemplo
xsd:int                         Inteiro com 32 bits        -12
xsd:boolean                  Booleano (1 ou 0)          1
xsd:string                     Cadeia de caracteres    "Olá"
xsd:float ou xsd:double  Ponto flutuante             -12,21
xsd:timeInstant             Data e Hora                  2001-03-27T00:00:01-08:00
SOAP-ENC:base64       Binário base 64 bits      eW91IGNhbid0IHJlYWQgdGhpcyE=
Por fim, o elemento Envelope deve possuir a seguinte atribuição de namespace: xmlns:soap="http://www.w3.org/2001/12/soap-envelope". No caso do Envelope, o atributo xmlns é obrigatório pois identifica o envelope como um envelope SOAP; sem essa identificação, o mesmo não poderia ser interpretado como tal. O valor desse atributo também é fixo (seria outro para outra versão do SOAP): "http://www.w3.org/2001/12/soap-envelope". Daí o uso do prefixo "soap" em "soap:Envelope" no exemplo dado.
Corpo
O Elemento Envelope deve ter um elemento-filho chamado Body (corpo). Esse elemento contém a informação da mensagem, incluindo a chamada do procedimento ou o retorno de seu resultado (que é o objetivo final da mensagem).
Na mensagem de Request do exemplo, o Body possui um elemento-filho, o retornaNome. Esse elemento define a operação requisitada nessa mensagem. Os atributos desse elemento, bem como os elementos-filho do mesmo são específicos do serviço em questão (definidos no documento apontado pelo namespace desse elemento). No exemplo, o único elemento-filho é o numdre, cujo tipo é um inteiro.
Assim sendo, a estrutura genérica do Body seria, por exemplo:
<soap:Body>
     <ns:operacao1 xmlns:ns="www.definicao.com">
            <ns:argumento1>valor1</ns:argumento1>
             ...
             <ns:argumenton>valorn</ns:argumenton>
     </ns:operacao1>
       ...
     <ns:operacaon xmlns:ns="www.definicao.com">
            <ns:argumentoa>valora</ns:argumentoa>
             ...
             <ns:argumentoz>valorz</ns:argumentoz>
     </ns:operacaon>
</soap:Body>