我目前正在使用Ruby的Net :: HTTP库来查询Newrelic端点。最近,这些查询已经开始返回404.我通过curl测试了我的确切查询 - 希望可能得到更详细的错误消息 - 但是通过curl的查询实际上返回了带有预期数据的200。所以查询确实有效,而且我有点不知道为什么Net :: HTTP此时会返回404.
以下是我目前所拥有的一些代码片段,如果有人可以提供任何进一步尝试的建议,那将非常感激!
环境:
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
答案 0 :(得分:2)
尝试更改
request = Net::HTTP::Get.new(uri.to_s)
到
request = Net::HTTP::Get.new(uri.request_uri)