繁体   English   中英

如何在java中使用resttemplate传递键值对

[英]How to pass key value pair using resttemplate in java

我要在post请求的主体中传递键值对。 但是当我运行我的代码时,我得到错误为“无法写入请求:找不到合适的HttpMessageConverter请求类型[org.springframework.util.LinkedMultiValueMap]和内容类型[text / plain]”

我的代码如下:

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用于转换MultiValueMap对象以便在HTTP请求中发送。 此转换器的默认媒体类型是application/x-www-form-urlencodedmultipart/form-data 通过将content-type指定为text/plain ,您告诉RestTemplate使用StringHttpMessageConverter

headers.setContentType(MediaType.TEXT_PLAIN); 

但是该转换器不支持转换MultiValueMap ,这就是您收到错误的原因。 你有几个选择。 您可以将内容类型更改为application/x-www-form-urlencoded

headers.setContentType(MediaType.APPLICATION_FORM_URLENCODED);

或者你不能设置内容类型,让RestTemplate为你处理它。 它将根据您尝试转换的对象来确定这一点。 尝试使用以下请求作为替代方案。

ResponseEntity<String> model = restTemplate.postForEntity(giftango_us_url, bodyMap, String.class);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM