Net :: HTTP to Newrelic返回404,但curl返回200

时间:2017-05-29 16:15:40

标签: ruby https net-http

我目前正在使用Ruby的Net :: HTTP库来查询Newrelic端点。最近,这些查询已经开始返回404.我通过curl测试了我的确切查询 - 希望可能得到更详细的错误消息 - 但是通过curl的查询实际上返回了带有预期数据的200。所以查询确实有效,而且我有点不知道为什么Net :: HTTP此时会返回404.

以下是我目前所拥有的一些代码片段,如果有人可以提供任何进一步尝试的建议,那将非常感激!

环境

  • JRuby 1.7.26(所以Ruby 1.9.3p551)
  • Rails 3.2.21

Ruby代码

uri = URI('https://NEWRELIC_HOST/PATH/ACCOUNT_ID/query')
parameters = { :nrql => NRQL_QUERY_STRING }
uri.query = URI.encode_www_form(parameters)

request = Net::HTTP::Get.new(uri.to_s)
request['X-Query-Key'] = NEWRELIC_QUERY_KEY

Net::HTTP.start(uri.hostname, uri.port, {:use_ssl => true}) do |http|
    response = http.request(request)
end

每次都会返回404错误代码。我已经针对几个有效的Newrelic端点/帐户尝试了它,并且每次都是404错误。

CURL代码

现在,如果我采取相同的请求,并在命令行上卷曲,没有问题,我得到一个200,所有数据都正确返回:

curl -H "X-Query-Key: NEWRELIC_QUERY_KEY" https://NEWRELIC_HOST/PATH/ACCOUNT_ID/query?NRQL_QUERY_STRING

1 个答案:

答案 0 :(得分:2)

尝试更改

request = Net::HTTP::Get.new(uri.to_s)

request = Net::HTTP::Get.new(uri.request_uri)