POST request via RestTemplate in JSON

2022-08-31 07:58:26

我没有找到任何如何解决我的问题的例子,所以我想向你寻求帮助。我不能简单地使用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);

我的错是什么?


答案 1

这种技术对我有用:

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

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

我希望这有帮助


答案 2

我在尝试调试 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);

我的 rest 终结点使用特定的 JSON 解析器,字段名称周围需要双引号,因此这就是我在请求Json String 中转义双引号的原因。