我已经看到很多关于如何在单个响应中解组多个根元素的事情。我的问题有点不同。我需要联系的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的某种可怕组合,但我对这部分没有任何控制权。
答案 0 :(得分:0)
我们通过为表示扩展响应的每个类创建一个接口来解决这个问题。我不知道为什么我之前没有想到这一点,我对JaxB的理解在当时是不存在的。收到响应时,会检查单词“Error”,如果找到,则将其解组到ErrorResponse类中,否则将其解组为成功响应。