1

Spring の RestTemplate を使用して http リクエストを送受信しています。Spring HttpEntity を使用して http リクエストを作成しています。私は HttpConverters を使用して、http 要求でアプリケーション オブジェクトをシリアル化し、その逆も行います。Spring docsによると、デフォルトのコンバーターは 4 つあります。

  • ByteArrayHttpMessageConverter、
  • StringHttpMessageConverter、
  • FormHttpMessageConverter、
  • ソースHttpMessageConverter.

を使用FormHttpMessageConverterして送信できるように、文字列内のいくつかの属性と値のペアをシリアル化するために使用していRestTemplateます。ただし、FormHttpMessageConverterhttp 要求パラメーターの値が aMultiValueMapである必要があり、このため、属性と値のペアごとにこれを行う必要があります。

final HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
final MultiValueMap<String, String> postParams = new LinkedMultiValueMap<String, String>();

String attrib1[] = new String[]{"value1"};
postParams.put("attrib1", Arrays.asList(attrib1));

HttpMessageConverter各パラメーターの単純なマップを受け入れる単純なものを使用したいと思います。何かのようなもの:

final HashMap<String, String> postParams = new HashMap<String, String>();
postParams.put("exclusiveOnly", "value1");

前者の方が一般的であることはわかっていますが、後者の方が多くのアプリケーションで役立つと思われるためHttpConverter、Springのデフォルトではない理由を知りたいと思います。HttpConverterとにかく、私が望むものを達成するためのカスタムを作成する方法のヒントやポイントリンクを教えていただけますか?

4

0 に答える 0