创建SOAP错误响应

时间:2011-07-09 15:55:41

标签: exception soap

我正在创建一个Web服务,我公司的内部客户端将调用它。服务方法如下所示:

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>

2 个答案:

答案 0 :(得分:1)

如何简单地将<errors>数组元素作为消息中的可选元素,并使用一个或多个描述错误的<error>元素填充它?然后,您可以指定响应消息将包含填充的<errors>元素(以及即使面对错误也可能需要的其他元数据元素;可能<sourceSystemID><targetSystemID>是这样的元素?)但不是<Proposal>,或者它不包含<Proposal>但不包含<errors>(或者元素将为空)。

(顺便说一下,我同意应该在邮件正文中指出业务错误,而不是SOAP错误。)

答案 1 :(得分:1)

我同意Aasmund Eldhuset,除非这些错误表明操作失败了。在这种情况下,您应该使用SOAP Fault。