2011-07-09 53 views
0

我正在創建一個Web服務,我公司的內部客戶端將會調用它。服務方法如下所示:創建SOAP錯誤響應

CreateProposalResponse ProposalSOAService :: CreateProposal(CreateProposalRequest)

對於CreateProposalResponse消息我需要的業務錯誤信息添加到響應。我一直在閱讀很多有關將錯誤放入SOAP Headers的問題,但對於業務錯誤,我不認爲這是放置它們的適當位置,因爲這應該是系統/傳輸/驗證類型的錯誤而不是業務錯誤。以下是我對CreateProposal()SOA調用的響應XML。有人可以告訴我如何將錯誤消息添加到此響應中嗎?我很難想象這一點,以及呼叫客戶如何確定與正常響應和業務錯誤/異常的區別。

CreateProposalResponse消息如下所示:

<?xml version="1.0" encoding="UTF-8" ?> 
<CreateProposalResponse xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
         xsi:schemaLocation="http://xmlns.xxx.com/aces/proposal src/Proposal_v1.0.xsd" 
         xmlns="http://xmlns.raytheon.com/aces/proposal"> 
    <userId>022483</userId> 
    <Proposal> 
    <proposalTitle>SBT Prop</proposalTitle> 
    <proposalDescription>Proposal is for SBT</proposalDescription> 
    <businessSegmentCode>SAS</businessSegmentCode> 
    <proposalType>Test</proposalType> 
    <proposalExternalRefID>SBT38829</proposalExternalRefID> 
    <proposalStartDate>2009-01-01</proposalStartDate> 
    <proposalEndDate>2025-01-01</proposalEndDate> 
    </Proposal> 
    <sourceSystemID>SBT</sourceSystemID> 
    <targetSystemID>ACES</targetSystemID> 
</CreateProposalResponse> 

回答

1

如何簡單地具有<errors>數組元素作爲你的消息中的可選元件,並且與一個或多個<error>元件描述錯誤填充它( S)?然後,您可以指定響應消息包含填充的<errors>元素(以及其他元數據元素,即使在出現錯誤時也可能需要;也許<sourceSystemID><targetSystemID>是這樣的元素?),但不包含<Proposal>,或者它會不包含<Proposal>,但不包含<errors>(或元素將爲空)。

(順便說一句,我認爲,企業的錯誤應該在郵件正文中註明,而不是SOAP錯誤。)

+0

謝謝你已經證實我覺得這是正確的做法。 –

1

我Aasmund Eldhuset同意,除非這些錯誤的指示操作失敗。在這種情況下,您應該使用SOAP Fault。