В коде, который я унаследовал, есть вызов REST, который устанавливает права пользователя для виртуального хоста в установке rabbitmq. В моем ящике разработчика установлен последний сервер RabbitMQ, 3.7.7. Клиентское программное обеспечение использует Spring RestTemplate для запроса хоста. Он генерирует запрос PUT к http: // локальный: 15672 / API / разрешения / myhost / администратор с полезной нагрузкой
{"read":".*","write":".*","configure":".*"}
и HTTP-заголовок Content-Type:application/json;charset=UTF-8
Мне все это кажется разумным, но ответ
HTTP/1.1 415 Unsupported Media Type
Этому коду уже много лет, и я подозреваю, что это моя установка RabbitMQ для него слишком новая, но я бы предпочел сделать код ориентированным на будущее, чем устанавливать RabbitMQ 2015 года ...
Я много гуглил по этой проблеме, но все, что я нашел, это некоторая ошибка с дублированием заголовков в клиентском программном обеспечении rabbitmq, которое здесь не используется. Я проследил его по классам apache httpclient, и на стороне отправителя ничего не пахнет.
Любые предложения, что не так?





Оказалось, что Apache HttpClient добавлял к сообщению второй заголовок типа содержимого, что вызвало отклонение плагина RabbitMQ Management.
Да, тип контента не следует применять
curl -s -i -u guest:guest -H "content-type: application/json" -H "content-type: application/json" -X POST --data '{"properties":{"delivery_mode":2},"routing_key":"program.*","payload":"{\"id\":\"123456\"}","payload_encoding":"string"}' 'http://127.0.0.1:15672/api/exchanges/%2F/my-exchange/publish'
вернуть HTTP / 1.1 415 Неподдерживаемый тип носителя
Без типа содержимого или только один:
curl -s -i -u guest:guest -H "content-type: application/json" -X POST --data '{"properties":{"delivery_mode":2},"routing_key":"program.*","payload":"{\"id\":\"123456\"}","payload_encoding":"string"}' 'http://127.0.0.1:15672/api/exchanges/%2F/my-exchange/publish'
return HTTP/1.1 200 OK
Вместо того, чтобы просто публиковать фрагменты HTTP-запроса, отправьте запрос и ответ весь. Также обратите внимание, что команда RabbitMQ отслеживает список рассылки
rabbitmq-users.