0

有没有人使用 curl 来编写 ActiveMQ 主题的脚本插入?我正在尝试这样的事情

curl -d "JMSDestination=COMMON_TOPIC&JMSDestinationType=topic&JMSMessageCount=1&JMSText={\"name\":\"values-etc\"}}" http://localhost:8161/admin/sendMessage.action

我返回 HTTP 500 NullPointerException,它看起来像AMQ-2740

java.lang.NullPointerException
at org.apache.activemq.web.handler.BindingBeanNameUrlHandlerMapping.getHandlerInternal(BindingBeanNameUrlHandlerMapping.java:57)

看起来问题是生成一个密钥并重新发送它,这就是我迷路的地方。有人对此有好运吗?

4

1 回答 1

2

这适用于 BASIC HTTP 身份验证和 ActiveMQ 5.4.2。

正如您所说,您必须包含密钥,以及维护您的 java 会话。让我们在 SECRET 变量中获取密钥并保存 cookie 文件(用于 JSESSIONID)。

SECRET=`curl --silent -H "Authorization: Basic YWRtaW46c29tZXBhc3N3b3Jk" -c cookies "http://127.0.0.1:6500/admin/send.jsp?JMSDestination=$DESTINATION&JMSDestinationType=$DESTINATION_TYPE" | sed -n '/secret/s/.*name="secret"\s\+value="\([^"]\+\).*/\1/p'`

Authorization 标头包含您的凭据的哈希值,您可以在实际的 Web 控制台和 Web 开发工具(Chome 中的 F12)中嗅探您的凭据。

通过重复使用 cookie 和 SECRET 发送您的消息

curl --silent -H "Authorization: Basic YWRtaW46c29tZXBhc3N3b3Jk" -b cookies --data "secret=${SECRET}&JMSDestination=${DESTINATION}&JMSDestinationType=${DESTINATION_TYPE}&JMSText=${MESSAGE}"

请注意,5.8 有一个RESTful api,应该被授予特权。

于 2013-01-11T14:50:35.867 回答