Не получается отправить POST запрос (HttpMessageNotReadableException:JSON parse error)
При попытке отправить POST запрос другому приложению получаю ошибку HttpMessageNotReadableException:JSON parse error:Cannot construct instance of,no String-argument constructor/factory method to deserialize from String
DTO(первое приложение)
@Data
@AllArgsConstructor
@NoArgsConstructor
@JsonInclude(JsonInclude.Include.NON_NULL)
@JsonIgnoreProperties(ignoreUnknown = true)
public class MoneyRequestDto {
@JsonProperty("grant")
private Integer grant;
}
DTO(второе приложение)
@Data
@AllArgsConstructor
@NoArgsConstructor
public class GrantsResponseDto {
private int grant;
}
Service(Первое приложение)
@Service
public class GrantTransactionServiceImpl implements GrantTransactionService{
private final RestTemplate restTemplate;
public GrantTransactionServiceImpl(RestTemplateBuilder restTemplateBuilder) {
restTemplate = restTemplateBuilder.build();
List<HttpMessageConverter<?>> messageConverters = new ArrayList<>();
MappingJackson2HttpMessageConverter converter = new MappingJackson2HttpMessageConverter();
converter.setSupportedMediaTypes(Collections.singletonList(MediaType.ALL));
messageConverters.add(converter);
restTemplate.setMessageConverters(messageConverters);
}
@Override
public RatingResponseDto getRating(int id) {
String url = "http://localhost:8088/api/groups/student/rating/" + id;
ResponseEntity<RatingResponseDto> response = restTemplate.exchange(
url,
HttpMethod.GET,
null,
new ParameterizedTypeReference<RatingResponseDto>() {});
RatingResponseDto ratingResponseDto = response.getBody();
return ratingResponseDto;
}
@Override
public void transferMoney(MoneyRequestDto moneyRequestDto, int id) {
String url = "http://localhost:8088/api/groups/student/grants/" + id;
HttpHeaders headers = new HttpHeaders();
headers.setContentType(MediaType.APPLICATION_JSON);
ResponseEntity<MoneyRequestDto> response = restTemplate.exchange(
url,
HttpMethod.POST,
new HttpEntity<>(MoneyRequestDto.class, headers),
new ParameterizedTypeReference<MoneyRequestDto>() {});
response.getBody();
response.getStatusCode();
}
}
Service(Второе приложение)
@Service
public class StudentServiceImpl implements StudentService {
@Autowired
private StudentRepository studentRepository;
@Autowired
private GroupRepository groupRepository;
@Override
public RatingDTO getRatingDTO(int id) {
Student student = studentRepository.getReferenceById(id);
RatingDTO ratingDTO = new RatingDTO();
ratingDTO.setId(student.getId());
ratingDTO.setRating(student.getRating());
return ratingDTO;
}
@Override
public void getMoney(GrantsResponseDto grantsResponseDto, int id) {
Student student = studentRepository.getReferenceById(id);
if (student.getGrant() == null) {
student.setGrant(grantsResponseDto.getGrant());
studentRepository.save(student);
} else {
student.setGrant(student.getGrant() + grantsResponseDto.getGrant());
}
studentRepository.save(student);
}
JSON
{
"MoneyRequestDto" : {
"grant": 3000}
}
}