Получение 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

Вы делаете оба шага в этом порядке и обновляете вопрос с обновленным кодом.

Другие вопросы по тегам