Pergunta

Estamos desenvolvendo um novo serviço web e estão olhando para a "melhor prática" para o regresso de erros na resposta sabão.

Estávamos olhando para a criação de um objeto de resposta de erro que cada resposta deve conter como uma propriedade. Isto parece um pouco pesado no entanto e estão se perguntando se é possível usar o cabeçalho SOAP para transportar esta informação? Como você normalmente lidar com erros personalizados usando SOAP?

Foi útil?

Solução

SoapFault é usado para erro espera e informações de status, e retorna servidor 500 no cabeçalho HTTP para que indicá-lo como falha.

consulte a especificação de W3.org

http://www.w3.org/TR/ 2000 / NOTA-SOAP-20000508 / # _ Toc478383507

Você pode criar seu próprio informações do token por qualquer colocando-o cabeçalho de sabão ou mesmo dentro de um elemento em seu resultado de retorno contanto que você documentar claramente para terceiros. No entanto isso não é a maneira padrão para ir para a criação de erros.

Outras dicas

Soap já usa cabeçalhos personalizados para informações de erro, tudo que você precisa fazer é lançar uma exceção no lado do servidor, e exceção é gerada no lado do cliente como um SoapException .

Você pode jogado SoapExceptions na serverside se você quiser mais controle sobre a mensagem de exceção / info.

Edit: Para obter informações adicionais, juntamente com o pedido, cabeçalhos de sabão personalizadas podem ser usadas. Aqui está um exemplo artigo sobre CodeProject que os cabeçalhos de sabão costume usado para autenticação, mas o hábito cabeçalhos de sabão pode ser usado para outros fins como o envio de informações adicionais que não é necessariamente uma condição de erro (pode ser um negócio informações lógica)

Eu usei técnicas semelhantes no passado para operações complexas. Especialmente quando você precisa (várias?) Descrições de erro, bem como como código de erro.

cabeçalhos

sabão são para informação out-of-band, e não deve ser usado para mensagens de erro. Além disso, os cabeçalhos do sabão não deve ser utilizado em respostas de sabão porque:

  • se mustUnderstand está ausente ou 0, o cliente pode ignorá-los com segurança.
  • se mustUnderstand é 1, o cliente não pode sinalizar que não compreendê-lo (já que é uma resposta).

E sim, eu sei que alguns padrões WS- * descrever cabeçalhos de sabão na resposta ...

Assim,

Use falhas de sabão para erros que são suficientemente grave que não há nenhum objeto de resposta. Adicionar um status símbolo para a resposta para avisos e mensagens informativas.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top