У меня есть Spring MVC Rest Controller, который просто добавляет запись клиента.Моя служба отдыха проходит через JSON и работает нормально, когда я звоню из веб-клиента или тестового стенда, такого как Soap-UI.Однако, когда я пытаюсь POST использовать RestTemplate, я получаю исключение JacksonMappingException: невозможно создать экземпляр CustomerObject, проблема: не найден подходящий метод создателя.
Это явно связано с тем, как я создаю запрос JSON,чтобы добавить немного мяса к костям, вот что я делаю:
Мои тестовые сообщения с использованием RestTemplate
@Test
public void postCustomerIntegrationTest() throws Exception{
String JSONInput = ("{" +
" \"firstName\": \"Anouska\"," +
" \"lastName\": \"Williams\"," +
" \"email\": \"Anouska@place.com\"," +
" \"cardBin1\": 123456768," +
" \"cardBin2\": 123456789," +
" \"language\": \"Spanish\"," +
" \"country\": \"Mexico\"," +
" \"product\": \"shit\"," +
" \"telephoneNumber\": 447869995262," +
" \"termsAndConditions\": \"true\"" +
"}");
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
HttpEntity request= new HttpEntity(JSONInput, headers);
Registration output = restTemplate.postForObject(BASE_URL, request, CustomerObject.class);
assertNotNull("no person",output);
assertNotNull(output.getId());
assertEquals("Bob", output.getFirstName());
}
Мой RestTemplate подключается через Spring следующим образом:
<bean id="restTemplate" class="org.springframework.web.client.RestTemplate">
<property name="messageConverters">
<list>
<bean id="jsonConverter" class="org.springframework.http.converter.json.MappingJacksonHttpMessageConverter">
<property name="supportedMediaTypes" value="application/json" />
</bean>
</list>
</property>
</bean>
Тестовый JSON, который я здесь использую, аналогичен тесту JSON, который я использую в Soap-UI.Отладив код, он выглядит так, как будто он рассматривает мой JSON как строку, а Джексон пытается преобразовать все, потому что не может найти ассоциированное поле (что, конечно, не может).
Iдумаю, мне нужно знать, как передать JSON в мой RestTemplate таким образом, чтобы запрос был обработан в правильном формате JSON.Я провел все утро, пытаясь найти пример, и нигде не могу его найти.
Большое спасибо за вашу помощь.