1

私が作成しようとしているプロジェクトで、有線の何かが進行していることに気づきました。RestTemplate を使用しています。そして、サーバーに接続してデータを取得しようとしています。複数のコントローラークラスでプログラムを壊すことにするまで、すべてがうまくいきました。私がしたことを見てください。これらの新しいクラスのそれぞれに、私はそれらのそれぞれに挿入します:

RestTemplate restTemplate= new RestTemplate();

データを取得するために、私は JAXB アノテーションのみを使用しています (データ バインディング用)。必要なものは何でも取得できます。しかし、新しいクラスでこのコード行を実行しようとすると:

 ResponseEntity<AClass> result = restTemplate.exchange("url",
                        HttpMethod.GET, entity, AClass.class);

私はこの例外を取っています: RestClientException "応答を抽出できませんでした: 応答タイプ [AClass] およびコンテンツ タイプ [application/xml] に適した HttpMessageConverter が見つかりませんでした"

前のクラスに戻せば問題なく実行できます。本当に理由がわかりません。おそらく、新しいクラスで新しいRestTemplateを使用しているためです。別のRestTemplatesを宣言し、この方法で宣言しようとしています:@Autowiredですが、問題は残ります。ディスパッチャ サーブレットで何か新しいものを宣言する必要がありますか?さらに、多くのクラスでオブジェクト restTemplate(RestTemplate restTemplate=new RestTemplate()) を呼び出すことができます。特定のクラスで宣言し、そこから呼び出す必要がありますか? あなたの提案を期待しています。

4

1 に答える 1

0

以前にインスタンスをどのようにrestTemplateセットアップしましたか? インスタンスにを登録する必要がMarshallingHttpMessageConverterありRestTemplateます。そうしないと、XML を非整列化する方法がわかりません。このようなもの:

Jaxb2Marshaller jaxbMarshaller = new Jaxb2Marshaller();
// Make sure context paths includes AClass's package
jaxbMarshaller.setContextPaths("com.example.generated");
MarshallingHttpMessageConverter converter = new 
    MarshallingHttpMessageConverter(jaxbMarshaller, jaxbMarshaller);
restTemplate.setMessageConverters(Arrays.<HttpMessageConverter<?>> asList(converter));
于 2012-05-14T10:41:33.583 に答える