13

使用 HTTP API 时,我尝试调用活动性测试以进行监控。目前我正在使用 curl 和以下命令进行测试:

 curl -i http://guest:guest@localhost:55672/api/aliveness-test/

我得到以下回复:

HTTP/1.1 404 Object Not Found
Server: MochiWeb/1.1 WebMachine/1.9.0 (someone had painted it blue)
Date: Mon, 05 Nov 2012 17:18:58 GMT
Content-Type: text/html
Content-Length: 193

<HTML><HEAD><TITLE>404 Not Found</TITLE></HEAD><BODY><H1>Not Found</H1>The requested document was not found on this server.<P><HR><ADDRESS>mochiweb+webmachine web server</ADDRESS></BODY></HTML>

当发出仅列出用户或虚拟主机的请求时,请求成功返回:

$ curl -I http://guest:guest@localhost:55672/api/users

HTTP/1.1 200 OK
Server: MochiWeb/1.1 WebMachine/1.9.0 (someone had painted it blue)
Date: Mon, 05 Nov 2012 17:51:44 GMT
Content-Type: application/json
Content-Length: 11210
Cache-Control: no-cache

我正在使用 RabbitMQ 的最新稳定版本 (2.8.7) 并且显然安装了管理插件以供 API 与用户调用一起使用(由于它包含公司数据而忽略了响应,但正如预期的那样只是常规 JSON )。

互联网上没有太多关于此呼叫失败的信息,所以我想知道是否有人以前见过这个?

谢谢,克里斯蒂安

4

1 回答 1

44

事实证明,虚拟主机名称开头的“/”不是隐含的,即使作为 URL 的一部分也是如此。为了让它工作,我只是改变了我的请求:

curl -i http://guest:guest@localhost:55672/api/aliveness-test/

curl -i http://guest:guest@localhost:55672/api/aliveness-test/%2F

由于 %2F 是 '/' HTTP 编码,我的请求现在查询名为 '/' 的虚拟主机并返回 200 响应,如下所示:

{"status":"ok"}
于 2012-11-06T10:45:21.583 回答