Получение org.springframework.web.client.HttpClientErrorException: 415 неподдерживаемый тип носителя для веб-сервисов Spring Rest
Получение следующего исключения для веб-сервисов контроллера Spring Rest: -
org.springframework.web.client.HttpClientErrorException: 415 неподдерживаемый тип мультимедиа в org.springframework.web.client.DefaultResponseErrorHandler.handleError(DefaultResponseErrorHandler.java:91.targe.web. 667)
Код:
public class PaymentProcessController {
@RequestMapping(value = "/payment_failure", method = RequestMethod.POST)
public ModelAndView savePayFailure(HttpServletRequest request, HttpServletResponse response, HttpSession session)
{
RestTemplate restTemplate = new RestTemplate();
Invoice invoice = restTemplate.getForObject(
"http://localhost:8080/rooftop/invoice/findByProperty/TRANASACTION_NO/" + tx
nid, Invoice.class);
}
REST-клиент записывается в InvoiceRestController, как показано ниже:
InvoiceRestController:
@RestController @RequestMapping(value = "/invoice/")
public class
InvoiceRestController { @RequestMapping(value =
"/findByProperty/{property}/{value}", method = RequestMethod.GET,
produces = MediaType.APPLICATION_JSON_VALUE, consumes =
MediaType.APPLICATION_JSON_VALUE)
public ResponseEntity<Invoice> findByProperty(@PathVariable String property, @PathVariable String value) throws Exception {
}
1 ответ
Проблема очень локальна для вашей системы, поэтому я думаю, что универсальный ответ не может быть предоставлен. Только шаги для устранения проблемы.
1. Сначала убедитесь, что преобразователи сообщений Http находятся на месте, т.е. библиотека, такая как Джексон, включена в ваш путь к классу, и если библиотека включена, убедитесь, что jar не поврежден. Иногда это является причиной ошибки, которую вы получаете.
Эта библиотека автоматически включается в Spring Boot.
Если вы не используете какие-либо фреймворки, вам может потребоваться сделать что-то вроде этого
2. Во-вторых, когда вы отдыхаете, звоните из savePayFailure
убедитесь, что вы установили и передаете соответствующие заголовки согласования контента, такие как Accept
& Content-Type
в RestTemplate
,
Ваш api отдыха очень ясен, поскольку он потребляет и что производит, но, делая api call, вы не ставите таких ожиданий. Так как это ваш пользовательский клиент, вам нужно настроить для преобразования сообщений и заголовков.
Как установить заголовок "Accept:" в запросе Spring RestTemplate?
HTTP получить с заголовками, используя RestTemplate
Добавить мой настраиваемый заголовок http в запрос Spring RestTemplate / расширить RestTemplate
Вы делаете оба шага в этом порядке и обновляете вопрос с обновленным кодом.