在我继承的代码中,有一个REST调用,该调用为Rabbitmq安装中的虚拟主机设置用户权限。在我的开发人员框中,我安装了最新的RabbitMQ服务器3.7.7。客户端软件使用Spring RestTemplate查询主机。它使用有效载荷
生成对http://localhost:15672/api/permissions/myhost/administrator的PUT请求{"read":".*","write":".*","configure":".*"}
和HTTP标头Content-Type:application/json;charset=UTF-8
对我来说,这一切都很合理-但答案是
HTTP/1.1 415 Unsupported Media Type
这段代码已经存在多年了,我怀疑它是我的RabbitMQ安装的新手,但是我宁愿使代码具有时效性,而不是从2015年开始安装RabbitMQ ...
我已经在这个问题上进行了广泛的搜索,但是我发现的只是关于Rabbitmq客户端软件中标头加倍的一些错误,此处没有使用。我将其追溯到apache httpclient类中,发件人方面没有任何异味。
任何建议有什么问题吗?
答案 0 :(得分:0)
事实证明,Apache HttpClient在消息中添加了第二个内容类型标头,导致RabbitMQ管理插件被拒绝。
答案 1 :(得分:0)
是的,不应应用内容类型
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'
返回HTTP / 1.1 200 OK