如何通过JSON中的RestTemplate发送POST请求?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (55)

我没有找到任何示例如何解决我的问题,所以我想问你的帮助。我不能简单地使用JSON中的RestTemplate对象发送POST请求

每当我得到org.springframework.web.client.HttpClientErrorException: 415 Unsupported Media Type

我以这种方式使用RestTemplate:

...
restTemplate = new RestTemplate();
List<HttpMessageConverter<?>> list = new ArrayList<HttpMessageConverter<?>>();
list.add(new MappingJacksonHttpMessageConverter());
restTemplate.setMessageConverters(list);
...
Payment payment= new Payment("Aa4bhs");
Payment res = restTemplate.postForObject("http://localhost:8080/aurest/rest/payment", payment, Payment.class);

我的错是什么?

提问于
用户回答回答于

尝试调试REST端点时遇到此问题。这里是一个使用Spring的RestTemplate类来创建我使用的POST请求的基本示例。我花了相当长的时间来拼凑来自不同地方的代码以获得工作版本。

RestTemplate restTemplate = new RestTemplate();

String url = "endpoint url";
String requestJson = "{\"queriedQuestion\":\"Is there pain in your hand?\"}";
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);

HttpEntity<String> entity = new HttpEntity<String>(requestJson,headers);
String answer = restTemplate.postForObject(url, entity, String.class);
System.out.println(answer);

特定的JSON解析器我的休息端点在字段名称周围使用了所需的双引号,这就是为什么我在requestJson字符串中使用了双引号。

用户回答回答于

这项技术对我有用:

HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);

HttpEntity<String> entity = new HttpEntity<String>(requestJson, headers);
ResponseEntity<String> response = restTemplate.put(url, entity);

扫码关注云+社区