2

私の質問は、OAuth2RestTemplate で MappingJacksonHttpMessageConverter の MediaType を変更する方法と非常に似ていますが、多くの点で異なります。

SprintBoot で Spring 4 を使用しています。RestTemplateZimbra Web サービスのクエリに使用したいと考えています。Web サービスは「JSON SOAP」を返します。これは実際には、SOAP メッセージ形式の単なる JSON 応答です。

残念ながら、text/javascript; charset=utf-8そのメディア タイプのコンバーターが見つからないため、メッセージ コンバーターは失敗します。

MappingJackson2HttpMessageConverterこのコンテンツ タイプを通常の JSON と同じと見なすにはどうすればよいですか?

4

1 に答える 1

7

よく調べた後、この問題の解決策を見つけました。を呼び出すnew RestTemplate ()と、多数の defaultHttpMessageConverterが作成されてロードされます。これは Spring Bean を使用しません。

したがって、私のようにRestTemplate、すべてをデフォルトで構成し、必要なコンテンツ タイプをリストに追加するだけにしたい場合は、次の操作を実行できます。

  RestTemplate myRest = new RestTemplate ();
  for (HttpMessageConverter<?> myConverter : myRest.getMessageConverters ()) {
     if (myConverter instanceof MappingJackson2HttpMessageConverter) {
        List<MediaType> myMediaTypes = new ArrayList<MediaType> ();
        myMediaTypes.addAll (myConverter.getSupportedMediaTypes ());
        myMediaTypes.add (MediaType.parseMediaType ("text/javascript; charset=utf-8"));
        ((MappingJackson2HttpMessageConverter) myConverter).setSupportedMediaTypes (myMediaTypes);
     }
  }
于 2014-12-16T02:54:52.117 に答える