Я пишу клиенту для использования службы RESTful.Я должен отправить запрос в ключе, значении пары, они предложили мне использовать карту для этого.Служба RESTful, которую я вызываю, только примет JSON, а мой клиент будет на Java.Фактически он станет частью существующего корпоративного EJB-проекта.
Я написал клиента и могу успешно вызвать службу RESTful.На самом деле, если я отправляю запрос в формате String (формат JSON), я даже получаю ответ обратно.Но я хотел бы избежать этой ручной работы по преобразованию карты в строку формата JSON и последующей ее отправке в запросе.
Я установил Content-Type как application / json и создал карту, которая будет содержатьпара KeyValue.
Фрагмент кода от клиента:
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
headers.add(MyConstants.JWT_AUTH_TOK, restUtil.getJWTToken());
restTemplate = new RestTemplate();
ModelReqVO modVO = new ModelReqVO();
Map<String, String> dataMap = new HashMap<String, String>();
//Setting key,value into datamap (e.g. "key1", "value1")
modVO.setDataMap(dataMap);
ResponseEntity<ModelRspnsVO> result = restTemplate.postForEntity(mySrvcFN, new HttpEntity(modVO, headers), ModelRspnsVO.class);
Класс запроса (ModelReqVO):
public class ModelReqVO {
private HashMap<String, String> dataMap;
ModelReqVO() {
this.dataMap = new HashMap<String, String>();
}
//getter and setter generated
}
Это исключение, которое я получаю-
RestClientException: Could not write request: no suitable HttpMessageConverter found for request type [com.mycomp.myproj.ModelReqVO] and content type [application/json].
Я проверил HttpMessageConverters, которые у меня есть на моем restTemplate, и я нашел MappingJacksonHttpMessageConverter.Что-то еще требуется от меня в коде, чтобы использовать указанный конвертер?
Я нашел несколько примеров на форумах Spring.io, но они касались службы, которая требовала содержимого www / form, а не JSON.Удивительно, но я не нахожу каких-либо подробностей об использовании конкретного конвертера для Map для отправки в виде JSON.
Примечание: во фрагментах кода могут быть ошибки компиляции, я набрал код с мобильного телефона.Я не могу использовать Интернет на компьютере, на котором я пишу код, в целях безопасности.