Analise a mensagem para comunicação com um Serviço W...
< soap:Envelope
xmlns:soap="http://www.w3.org/2001/12/soap-envelope">
< soap:Header>
< m:Trans xmlns:m=http://www.w3schools.com/transaction/
soap:mustUnderstand="false" >234 < /m:Trans >
< /soap:Header>
< soap:Body xmlns:m="http://www.example.org/stock" >
< m:GetStockPrice >
< m:StockName>IBM
< /m:GetStockPrice >
< /soap:Body >
< /soap:Envelope >
Gabarito comentado
Confira o gabarito comentado por um dos nossos professores
A alternativa C é a correta. Vamos entender por quê e analisarmos todas as alternativas detalhadamente.
Primeiramente, precisamos compreender o funcionamento do SOAP (Simple Object Access Protocol). O SOAP é um protocolo baseado em XML para troca de informações estruturadas em ambientes de computação distribuída. Ele é amplamente utilizado para comunicação com serviços web. Uma mensagem SOAP geralmente é composta de um envelope que envolve um header e um body. O header pode conter informações opcionais sobre a mensagem como autenticação ou transações, enquanto o body contém a mensagem propriamente dita.
No cenário da questão, a mensagem SOAP possui um header com o elemento m:Trans. Este elemento não é reconhecido pelo servidor.
Vamos analisar cada alternativa:
A: não terá o conteúdo requisitado, mas terá um indicativo do erro ocorrido. Esta alternativa está incorreta porque, mesmo que o servidor não reconheça o elemento m:Trans, ele não necessariamente interfere na entrega do conteúdo requisitado se o atributo mustUnderstand estiver definido como false. Neste caso, o servidor simplesmente ignora o header que não entende e processa o restante da mensagem.
B: terá o conteúdo requisitado, mas terá um indicativo do erro ocorrido. Esta alternativa também está incorreta. Se o atributo mustUnderstand estiver definido como false, o servidor não precisa retornar um erro, apenas ignora o header desconhecido.
C: terá o conteúdo requisitado, sem nenhum indicativo de erro. Esta é a alternativa correta. Como o elemento m:Trans possui o atributo mustUnderstand="false", o servidor pode simplesmente ignorar o elemento do header e processar o resto da mensagem, retornando o conteúdo requisitado sem indicar erro.
D: não terá o conteúdo requisitado, mas terá um indicativo de erro genérico. Esta alternativa está incorreta. Novamente, pelo fato de o atributo mustUnderstand ser false, o servidor não gerará um erro ao desconhecer o elemento m:Trans.
E: não terá o conteúdo requisitado, nem um indicativo de erro. Esta alternativa está incorreta porque, conforme discutido, o servidor processa o body da mensagem normalmente se mustUnderstand estiver definido como false.
Em resumo, a resposta correta é a alternativa C porque a mensagem SOAP será processada corretamente pelo servidor, que ignorará o header desconhecido devido ao atributo mustUnderstand="false", retornando o conteúdo solicitado sem indicar erro.
Clique para visualizar este gabarito
Visualize o gabarito desta questão clicando no botão abaixo
Comentários
Veja os comentários dos nossos alunos
receberia um warning, não um erro
O atributo mustUnderstand pode ser usado para indicar se uma entrada de cabeçalho é obrigatória ou opcional para o destinatário de processar.
Se você adicionar mustUnderstand = “1” para um elemento filho do elemento Header indica que o receptor deve reconhecer o elemento ao processar o Header.
Se o receptor não reconhece o elemento irá falhar ao processar o Header.
O mustUnderstand aceita 0 ou 1.
http://www.w3schools.com/webservices/ws_soap_header.asp
Clique para visualizar este comentário
Visualize os comentários desta questão clicando no botão abaixo