Я не нашел примера, как решить свою проблему, поэтому хочу попросить вас о помощи. Я не могу просто отправить запрос POST с помощью объекта RestTemplate в JSON
Каждый раз получаю:
org.springframework.web.client.HttpClientErrorException: 415 Неподдерживаемый тип носителя
Я использую RestTemplate таким образом:
...
restTemplate = new RestTemplate();
List<HttpMessageConverter<?>> list = new ArrayList<HttpMessageConverter<?>>();
list.add(new MappingJacksonHttpMessageConverter());
restTemplate.setMessageConverters(list);
...
Payment payment= new Payment("Aa4bhs");
Payment res = restTemplate.postForObject("http://localhost:8080/aurest/rest/payment", payment, Payment.class);
В чем я виновата?
Ответы:
Эта техника сработала для меня:
надеюсь, это поможет
источник
.put()
естьvoid
!postForEntity(url, entity, String.class)
произведений вместоput(url, entity)
Я столкнулся с этой проблемой при попытке отладки конечной точки REST. Вот базовый пример использования класса Spring RestTemplate для выполнения запроса POST, который я использовал. Мне потребовалось довольно много времени, чтобы собрать воедино код из разных мест, чтобы получить рабочую версию.
Конкретный парсер JSON, моя конечная точка отдыха, использовал необходимые двойные кавычки вокруг имен полей, поэтому я избежал двойных кавычек в моем requestJson String.
источник
Я использовал шаблон отдыха с JSONObjects следующим образом:
источник
Как указано здесь, я думаю, вам нужно добавить
messageConverter
дляMappingJacksonHttpMessageConverter
источник
Если вы используете Spring 3.0, простой способ избежать исключения org.springframework.web.client.HttpClientErrorException: 415 Unsupported Media Type - включить файлы jar jackson в путь к классам и использовать
mvc:annotation-driven
элемент config. Как указано здесь .Я вытаскивал волосы, пытаясь понять, почему приложение mvc-ajax работает без какой-либо специальной конфигурации для
MappingJacksonHttpMessageConverter
. Если вы внимательно прочитали статью, на которую я ссылался выше:источник
Ошибка «415 Unsupported Media Type» сообщает вам, что сервер не примет ваш POST-запрос. С вашим запросом все в порядке, неправильно настроен сервер.
MappingJacksonHttpMessageConverter
автоматически установит заголовок типа содержимого запросаapplication/json
, и я предполагаю, что ваш сервер отклоняет это. Однако вы ничего не сказали нам о настройке вашего сервера, поэтому я не могу вам посоветовать.источник
Я так делаю, и это работает.
// Передаем сюда заголовки
Надеюсь это поможет
источник
У меня возникла эта проблема, и я использую Spring RestTemplate на клиенте и Spring Web на сервере. Оба API имеют очень плохую систему отчетов об ошибках, что чрезвычайно затрудняет их разработку.
После многих часов попыток всевозможных экспериментов я понял, что проблема была вызвана передачей нулевой ссылки для тела POST вместо ожидаемого списка. Я предполагаю, что RestTemplate не может определить тип содержимого по нулевому объекту, но не жалуется на это. После добавления правильных заголовков я начал получать в Spring другое исключение на стороне сервера перед тем, как ввести свой метод обслуживания.
Исправление заключалось в передаче от клиента пустого списка вместо нуля. Заголовки не требуются, поскольку тип содержимого по умолчанию используется для ненулевых объектов.
источник
Этот код работает у меня;
источник
Если вы не хотите обрабатывать ответ
Если вам нужен ответ на процесс
источник
Для меня произошла ошибка с этой настройкой:
AndroidAnnotations
Spring Android RestTemplate Module
и ...GsonHttpMessageConverter
Аннотации Android имеют некоторые проблемы с преобразованием для создания
POST
запроса без параметров. Просто параметрnew Object()
решил это за меня.источник
Зачем работать больше, чем нужно?
postForEntity
принимает вMap
качестве входных данных простой объект. Следующее отлично работает для меня при написании тестов для данной конечной точки REST в Spring. Я считаю, что это самый простой из возможных способов сделать запрос JSON POST в Spring:источник
Если вы не хотите самостоятельно отображать JSON, вы можете сделать это следующим образом:
источник
Я пробовал следующее при весенней загрузке:
источник