2017-06-02 7 views
0

レスポンス本文で基本JSONを返すRESTエンドポイントを呼び出していますが、Content-Typeレスポンスヘッダーはapplication/javascriptに設定されています。Springブート - HttpMessageConverter JSONP(アプリケーション/ javascript)

org.springframework:

RestTemplateBuilder restBuilder = new RestTemplateBuilder(); 
    return restBuilder.setConnectTimeout(connectTimeout) 
      .setReadTimeout(readTimeout) 
      .build(); 

私はデフォルトのコンバータが応答を処理することはできません。このテンプレートを使用してgetForObject要求を行い、私は例外を取得:

は、ここに私の標準RestTemplate Beanです。 web.client.RestClientException:応答を抽出できませんでした:応答タイプ[class MyResponseObj]とコンテンツタイプ[application/javascript]に適切なHttpMessageConverterが見つかりません

このレスポンスを処理して通常の変換を行う前に、RestTemplateに追加できる簡単な設定はありますか?

現時点では、ドメインオブジェクトの代わりにレスポンスをStringに変換し、ObjectMapperで手動でオブジェクトを作成するだけですが、少し汚れているようです。あなたが行うことができるはず何

答えて

0

は、アプリケーション/ javascriptのメディアタイプで動作するようにHttpMessageConverterをカスタマイズするものです。このようなhttps://dzone.com/articles/customizing

何かがうまくいくかもしれないが、私はこれをテストしませんでした:

@Bean 
    public MappingJackson2HttpMessageConverter mappingJackson2HttpMessageConverter() { 
     MappingJackson2HttpMessageConverter jsonConverter = new MappingJackson2HttpMessageConverter(); 
     jsonConverter.getSupportedMediaTypes().add(new MediaType("application/javascript")); 

     return jsonConverter; 
    } 

を今私はこれをRestControllerに焦点を当て、RestTemplateではなく、チュートリアルで取り上げました。それは、代わりに豆を使用しての動作しない場合は、手動で変換オブジェクトを作成し、RestTemplateオブジェクトにHttpMessageConvertersを設定することができます。

restTemplate.getMessageConverters().add(jsonConverter); 

キーは右側のメディアタイプへの適切な変換マップを持つことですあなたのケースのアプリケーション/ javascriptで。

関連する問題