如何解决RabbitMQ REST呼叫415响应问题?

时间:2018-09-14 02:24:01

标签: rabbitmq httpclient resttemplate

在我继承的代码中,有一个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类中,发件人方面没有任何异味。

任何建议有什么问题吗?

2 个答案:

答案 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