Получение org.springframework.web.client.HttpClientErrorException: 415 неподдерживаемый тип носителя для веб-сервисов Spring Rest - PullRequest
0 голосов
/ 15 декабря 2018

Получение следующего исключения для веб-служб контроллера Spring Rest: -

org.springframework.web.client.HttpClientErrorException: 415 Неподдерживаемый тип носителя в org.springframework.web.client.DefaultResponseErrorRandler (DefaultResponseErrorHandler.java:91) в org.springframework.web.client.RestTemplate.handleResponse (RestTemplate.java: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 Ответ

0 голосов
/ 17 декабря 2018

Проблема очень локальна для вашего устройства, поэтому я думаю, что универсальный ответ не может быть предоставлен.Только шаги для устранения проблемы.

1. Сначала убедитесь, что преобразователи сообщений Http находятся на месте, т.е. библиотека, такая как Джексон, включена в ваш путь к классам, и если библиотека включена, убедитесь, что jar не поврежден.Иногда это является причиной ошибки, которую вы получаете.

Эта библиотека автоматически включается в Spring Boot.

Если вы не используете какие-либо фреймворки, вам может понадобиться сделать что-то вроде this

2. Во-вторых, когда вы делаете вызов покой из savePayFailure, убедитесь, что вы установили и передали соответствующие заголовки согласования контента, такие как Accept & Content-Type в RestTemplate.

Ваш api по отдыху очень ясен, поскольку он потребляет и что производит, но во время вызова api такие ожидания не устанавливаются.Так как это ваш пользовательский клиент, вам нужно настроить для преобразования сообщений и заголовков.

Как установить заголовок «Accept:» для запроса Spring RestTemplate?

HTTP-получение с заголовками с использованием RestTemplate

Добавление моего настраиваемого заголовка http в запрос Spring RestTemplate / расширение RestTemplate

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

...