27

ポストリクエストの本文でキーと値のペアを渡す必要があります。しかし、コードを実行すると、「リクエストを書き込めませんでした。リクエストタイプ[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();
4

1 に答える 1

36

は、HTTP 要求で送信するオブジェクトFormHttpMessageConverterを変換するために使用されます。MultiValueMapこのコンバータのデフォルトのメディア タイプはapplication/x-www-form-urlencodedmultipart/form-dataです。content-type を として指定することで、text/plainRestTemplate にStringHttpMessageConverter

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);
于 2013-03-08T15:17:45.467 に答える