0

私のアプリケーションでは、サードパーティのアプリケーションが提供するサービスを利用する必要があります。それらが提供する応答は常に 200 であり、以下に示すように、データが利用可能かどうか、またはエラーが発生したかどうかに基づいて本文を変更します。

データがあれば

<products>
   <product></product>
   <product></product>
</products>

データが空の場合

<message> No record found </message>

いくつかの検証が失敗した場合

<error>Invalid Id</error>

私はRestTemplate.exchangeサービスを消費するために使用しています。私の質問は、ルート要素のタイプが 1 つしかない場合、それぞれのクラスを as として渡しますParameterizedTypeReferenceが、ここでは応答をマップして非整列化する方法です。

4

2 に答える 2

0

ここで行うべき正しいことは、サード パーティにサービス レスポンスをルート タグを持つように変更するよう依頼することです。応答オブジェクトは次のようになります。

<response>
<products>
   <product></product>
   <product></product>
</products>
<message> No record found </message>
<error>Invalid Id</error>
</response>

これにより、オブジェクトについてのみ気にする必要がありresponse、それぞれのサブタグの存在を確認できます。

これを機能させる他のオプションString.classは、型参照として渡すことで交換を行うことです。次に、返された文字列応答がproductsまたはmessageまたはであるかどうかを確認するために、コードでチェックを行う必要がありますerror

于 2016-08-30T18:37:52.677 に答える