Spring の RestTemplate を使用して http リクエストを送受信しています。Spring HttpEntity を使用して http リクエストを作成しています。私は HttpConverters を使用して、http 要求でアプリケーション オブジェクトをシリアル化し、その逆も行います。Spring docsによると、デフォルトのコンバーターは 4 つあります。
- ByteArrayHttpMessageConverter、
- StringHttpMessageConverter、
- FormHttpMessageConverter、
- ソースHttpMessageConverter.
を使用FormHttpMessageConverter
して送信できるように、文字列内のいくつかの属性と値のペアをシリアル化するために使用していRestTemplate
ます。ただし、FormHttpMessageConverter
http 要求パラメーターの値が 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
とにかく、私が望むものを達成するためのカスタムを作成する方法のヒントやポイントリンクを教えていただけますか?