2011-07-09 98 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。