Je dois transmettre la paire valeur/clé dans le corps de la demande de publication. Mais lorsque j'exécute mon code, j'obtiens l'erreur comme "Impossible d'écrire la demande: aucun HttpMessageConverter approprié trouvé pour le type de demande [org.springframework.util.LinkedMultiValueMap] et le type de contenu [text/plain]"
Mon code est le suivant:
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
est utilisé pour convertir les objets MultiValueMap
pour envoyer des requêtes HTTP. Les types de supports par défaut pour ce convertisseur sont application/x-www-form-urlencoded
et multipart/form-data
. En spécifiant le type de contenu comme text/plain
, vous dites à RestTemplate d'utiliser le StringHttpMessageConverter
headers.setContentType(MediaType.TEXT_PLAIN);
Mais ce convertisseur ne prend pas en charge la conversion d'un MultiValueMap
, c'est pourquoi vous obtenez l'erreur. Vous avez plusieurs options. Vous pouvez changer le type de contenu en application/x-www-form-urlencoded
headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);
Ou vous ne pouvez PAS définir le type de contenu et laisser RestTemplate le gérer pour vous. Il le déterminera en fonction de l'objet que vous tentez de convertir. Essayez d'utiliser la demande suivante comme alternative.
ResponseEntity<String> model = restTemplate.postForEntity(giftango_us_url, bodyMap, String.class);