Domanda

Stiamo sviluppando un nuovo servizio web e stiamo esaminando le "migliori pratiche" per la restituzione di errori nella risposta al sapone.

Stavamo cercando di creare un oggetto di risposta all'errore che ogni risposta avrebbe contenuto come proprietà. Questo sembra un po 'pesante e ti stai chiedendo se è possibile utilizzare l'intestazione SOAP per trasportare queste informazioni? Come gestisci normalmente gli errori personalizzati utilizzando SOAP?

È stato utile?

Soluzione

SOAPFault viene utilizzato per conservare le informazioni di errore e di stato e il server restituisce 500 nell'intestazione HTTP affinché lo dichiari come errore.

vedi le specifiche da W3.org

http://www.w3.org/TR/ 2000 / NOTE-SOAP-20.000.508 / # _ Toc478383507

Puoi progettare il tuo token di informazioni inserendolo nell'intestazione soap o anche all'interno di un elemento nel risultato di ritorno a condizione che lo documenti chiaramente per terze parti. Tuttavia, questo non è il modo standard di generare errori.

Altri suggerimenti

Il sapone utilizza già intestazioni personalizzate per informazioni sull'errore, tutto ciò che devi fare è generare un'eccezione sul lato server e l'eccezione viene sollevata sul lato client come SoapException .

È possibile generare SoapExceptions sul lato server se si desidera un maggiore controllo sul messaggio / informazioni sull'eccezione.

Modifica: Per ulteriori informazioni insieme alla richiesta, è possibile utilizzare intestazioni di sapone personalizzate. Ecco un esempio di articolo su CodeProject che utilizzava intestazioni di sapone personalizzate per l'autenticazione, ma personalizzate le intestazioni di sapone possono essere utilizzate per altri scopi come l'invio di informazioni extra che non sono necessariamente una condizione di errore (possono essere informazioni sulla logica aziendale)

Ho usato tecniche simili in passato per operazioni complesse. Soprattutto quando sono necessarie (più?) Descrizioni degli errori e anche un codice di errore.

Le intestazioni del sapone sono per informazioni fuori banda e non devono essere utilizzate per i messaggi di errore. Inoltre, le intestazioni di sapone non devono essere utilizzate nelle risposte al sapone perché:

  • se mustUnderstand manca o 0, il client può tranquillamente ignorarli.
  • se mustUnderstand è 1, il client non può segnalare che non lo capisce (poiché è una risposta).

E sì, so che alcuni standard WS- * descrivono le intestazioni di sapone nella risposta ...

Usa i guasti del sapone per errori che sono abbastanza gravi da non avere un oggetto risposta. Aggiungi un token di stato alla risposta per avvisi e messaggi informativi.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top