ポストリクエストの本文でキーと値のペアを渡す必要があります。しかし、コードを実行すると、「リクエストを書き込めませんでした:リクエストタイプ[org.springframework.util.LinkedMultiValueMap]およびコンテンツタイプ[text/plain]に適切なHttpMessageConverterが見つかりませんでした」というエラーが表示されます。
私のコードは次のとおりです:
MultiValueMap<String, String> bodyMap = new LinkedMultiValueMap<String, String>();
bodyMap.add(GiftangoRewardProviderConstants.GIFTANGO_SOLUTION_ID, giftango_solution_id);
bodyMap.add(GiftangoRewardProviderConstants.SECURITY_TOKEN, security_token);
bodyMap.add(GiftangoRewardProviderConstants.REQUEST_TYPE, request_type);
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.TEXT_PLAIN);
HttpEntity<MultiValueMap<String, String>> request = new HttpEntity<MultiValueMap<String, String>>(bodyMap, headers);
RestTemplate restTemplate = new RestTemplate();
ResponseEntity<String> model = restTemplate.exchange(giftango_us_url, HttpMethod.POST, request, String.class);
String response = model.getBody();
FormHttpMessageConverter
は、HTTPリクエストで送信するためにMultiValueMap
オブジェクトを変換するために使用されます。このコンバーターのデフォルトのメディアタイプはapplication/x-www-form-urlencoded
およびmultipart/form-data
です。 content-typeをtext/plain
と指定することで、StringHttpMessageConverter
を使用するようにRestTemplateに指示しています。
headers.setContentType(MediaType.TEXT_PLAIN);
ただし、そのコンバーターはMultiValueMap
の変換をサポートしていないため、エラーが発生します。いくつかのオプションがあります。 content-typeをapplication/x-www-form-urlencoded
に変更できます
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
または、content-typeを設定してRestTemplateに処理させることはできません。これは、変換しようとしているオブジェクトに基づいてこれを決定します。代わりに次のリクエストを使用してみてください。
ResponseEntity<String> model = restTemplate.postForEntity(giftango_us_url, bodyMap, String.class);