当相同的服务器请求可能返回两个不同的xml响应时,如何处理它?

时间:2014-08-01 13:04:44

标签: xml jaxb resttemplate

我已经看到很多关于如何在单个响应中解组多个根元素的事情。我的问题有点不同。我需要联系的API设置有点奇怪。即使出现错误,服务器也会返回200,但它会以XML格式返回错误消息,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<Error>
    <Number></Number>
    <Source></Source>
    <Description></Description>
    <HelpFile/>
    <HelpContext/>
</Error>

然而,预期的反应更像是:

<?xml version="1.0" encoding="UTF-8"?>
<Response>
    <Number></Number>
    <LabelImage></LabelImage>
    <Name></Name>
    <Address1/>
    <Address2></Address2>
    <City></City>
    <State></State>
    <Zip></Zip>
    <LabelSequenceNumber></LabelSequenceNumber>
    <DropOff></DropOff>
    <LogMessage/>
</Response>

我试图弄清楚如何从同一请求中接受这些响应中的任何一个。

我使用JaxB和RestTemplate来处理这些请求和响应。我需要谈论的API是Rest和SOAP的某种可怕组合,但我对这部分没有任何控制权。

1 个答案:

答案 0 :(得分:0)

我们通过为表示扩展响应的每个类创建一个接口来解决这个问题。我不知道为什么我之前没有想到这一点,我对JaxB的理解在当时是不存在的。收到响应时,会检查单词“Error”,如果找到,则将其解组到ErrorResponse类中,否则将其解组为成功响应。